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?

2 Solutions collect form web for “Cómo amortiguar solamente la última emisión de rx.Observable durante contrapresión”

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); 
  • ¿Cómo utilizar Flowable en RxJava 2?
  • Suscribir 2 diferentes Observable y onNext ambos?
  • Rx 2 Android ¿qué es mejor Single o Observable para llamadas api?
  • ¿Qué es RxJava equivalente de orElse
  • Uso de Mockito con Retrofit 2.0
  • Implementar reintento Cuando la lógica
  • Rxandroid pide que se ejecute en el hilo ui aunque esté suscrito en AndroidSchedulers.mainThread ()
  • RxJava No puede crear el controlador dentro de hilo que no ha llamado Looper.prepare ()
  • RxJava patrón para solicitar un remoto Observable con una caché temporal
  • Android rxJava Manejo de errores con retroadaptación
  • Cómo recibir la última emisión de secuencia al llamar a rx.Observable.sample ()?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.