¿Cómo obtener el último valor de BehaviorSubject?

¿Cómo puedo recuperar el último valor de BehaviorSubject en RxAndroid ?

Algunos antecedentes: Estoy usando RxJava para implementar el patrón MVVM. Mi ViewModel encapsula "propiedades vinculables" que son BehaviorSubject s. Estoy vinculándolos a los elementos de la interfaz de usuario como observables, asegurando que la interfaz se actualiza constantemente (y gracias a usar BehaviorSubject , va a suceder incluso si la suscripción tiene lugar después de establecer el valor).

Aún me gustaría poder acceder al último ("actual") valor "raw" de la propiedad, para la lógica de negocios.

¿Cómo puedo hacer eso?

Seguramente BehaviorSubject almacena de alguna manera, dado que vuelve a publicar el último valor para quien se suscribe a él.

Y aún BehaviorSubject.last() sólo devuelve un Observable<T> , y no parece exponer ningún método de tipo T retorno.

Sé que podría caché mí mismo, pero se siente redundante.

Supongo que también podría crear una suscripción desechable en mi getter, sólo para obtener el último valor con él y luego devolverlo al código de llamada, pero esto parece torpe.

¿Hay algo más limpio en la mano?

Como resulta, la razón detrás de esto es que RxAndroid por defecto depende de RxJava 1.0.4, donde los sujetos no expusieron getValue ni hasValue todavía.

Gracias a @akarnokd por ayudarme a darse cuenta de eso.

Como resulta, todo lo que se necesita para resolver el problema es agregar manualmente una dependencia de la última versión de RxJava lado a lado con la dependencia de build.gradle en build.gradle . A partir de ahora eso sería:

 compile 'io.reactivex:rxandroid:0.24.0' compile 'io.reactivex:rxjava:1.0.11' 

Consulte https://github.com/ReactiveX/RxAndroid/issues/171

  • InterruptedIOException al usar Retrofit2 con rx cuando retryOn
  • ¿Hay RxJava equivalente a Handler.postDelayed (Runnable r, delayMillis largo)
  • Uso de RxJava dentro de RecyclerView Adapter
  • Si se realiza la llamada onComplete para un Asunto RxJava, ¿tengo que anular la suscripción manualmente de nuevo?
  • Obtenga el valor actual de RxJava Observable
  • RxJava como autobús de eventos?
  • ¿Cómo estructurar mi aplicación usando MVP con rxjava y retrofit para obtener datos de Observables?
  • RxJava Observable a Completable, cómo evitar toBlocking ()
  • Limitar el rendimiento con RxJava
  • ¿Por qué Rxjava podría causar fugas de memoria?
  • RxJava + Retrofit -> BaseObservable para llamadas API para manejo centralizado de respuesta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.