Cómo amortiguar solamente la última emisión de rx.Observable durante contrapresión

Tengo un rx.Observable que emite el progreso de una tarea a onNext() . Las emisiones onNext() veces pueden ocurrir tan rápidamente que el Observer no puede mantener el ritmo, lo que resulta en contrapresión . Me gustaría manejar la contrapresión sólo almacenando en búfer las últimas emisiones del Observable .

Por ejemplo:

  • Observable emite 1 y Observer recibe 1 .
  • Mientras Observer sigue procesando 1 , Observable emite 2 , 3 y 4 .
  • Observer finaliza el procesamiento 1 y comienza el procesamiento 4 (las emisiones 2 y 3 se eliminan).

Esto parece ser un caso común para manejar el progreso en un Rx Observable ya que por lo general sólo se preocupan por la actualización de su interfaz de usuario con la información más reciente sobre el progreso. Sin embargo, no he sido capaz de averiguar cómo hacerlo.

Alguien sabe cómo esto se puede lograr con RxJava?

onBackPressureLatest es tu amigo aquí. 🙂 http://reactivex.io/RxJava/javadoc/rx/Observable.html#onBackpressureLatest ()

Observable.debounce suena como lo que necesitas. En el ejemplo siguiente la última emisión sólo de observable en cada ventana de 200ms será enviada al observador.

 observable .debounce(200, TimeUnit.MILLISECONDS) .subscribe(observer); 
  • Escritura de pruebas síncronas para Rx v2 Flowable
  • Kotlin: ¿Qué significa "return @"?
  • RxJava- validación de formulario RxAndroid en dynamic EditText
  • Cancelar la suscripción de un rx.Single en RxJava
  • ¿Cómo administrar un DialogFragment con RxJava?
  • Unidad de prueba de la aplicación android con retrofit y rxjava
  • InterruptedIOException al usar Retrofit2 con rx cuando retryOn
  • Observer.onError disparando de manera incoherente
  • Operadores de manipulación de errores de Retrofit 2 y RxJava
  • RxAndroid filter Observable <List <Item >>
  • Hacer cola de tareas con RxJava en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.