7

RxAndroidから最新の値を取得するにはどうすればよいBehaviorSubjectですか?

背景情報: RxJava を使用して MVVM パターンを実装しています。私のViewModelは、sである「バインド可能なプロパティ」をカプセル化しますBehaviorSubject。それらをオブザーバブルとして UI 要素にバインドし、インターフェイスが常に更新されるようにします (また、 を使用するおかげでBehaviorSubject、値を設定した後にサブスクリプションが行われた場合でも更新されます)。

ビジネスロジックのために、プロパティの最新の(実際の)「生の」値にアクセスできるようにしたいと考えています。

それ、どうやったら出来るの?

BehaviorSubjectサブスクライブした人に最新の値を再発行することを考えると、何らかの方法で確実にキャッシュします。

それでもBehaviorSubject.last()のみを返し、戻り値の型Observable<T>のメソッドを公開していないようです。T

自分でキャッシュできることはわかっていますが、冗長に感じます。

ゲッターで使い捨てのサブスクリプションを作成して、それで最新の値を取得し、それを呼び出し元のコードに返すこともできると思いますが、これは扱いにくいようです。

手元にもっときれいなものはありますか?

4

2 に答える 2

3

結局のところ、その背後にある理由は、RxAndroid がデフォルトで RxJava 1.0.4 に依存しているためであり、サブジェクトはまだ公開されていgetValueませhasValueん。

それを実現するのを手伝ってくれた@akarnokdに感謝します。

結局のところ、この問題を解決するには、RxJava の最新バージョンへの依存関係を、RxAndroid の依存関係と並べて手動で追加するだけbuild.gradleです。今のところ、それは次のようになります。

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

https://github.com/ReactiveX/RxAndroid/issues/171を参照してください

于 2015-06-07T20:08:44.817 に答える