12

EventBusパターンをRxJavaAndroid アプリで置き換えています。キャッシュ シングルトンのデータの更新を関係者に警告するイベントがありました。Web サービスが呼び出されるたびに、データが更新され、サブスクライバーは投稿されたイベントを介して警告されます。

私はRxJavaでこれに近いものを設定していAsyncSubjectます。オブザーバーはサブジェクトから 1 つのイベントを取得しますが、その後、onCompleteイベントを取得してサブスクライブを解除します。これは、UI が最初に読み込まれるときに機能しますが、データを更新する必要がある場合、通知されるサブスクライバーはありません。からのより多くのイベントをSubscribersリッスンし続けるように指示するにはどうすればよいですか?onNextSubject

Subject最新のアイテムを報告する が必要です。PublishSubjectサブスクリプション後にアイテムを発行するだけなので、私のニーズを完全には満たしていません。サブスクライバーはさまざまな時点 (おそらく最初のデータ イベントの後) に監視を開始するため、サブジェクトが最後に監視されたアイテムを発行し、後続のアイテムのためにストリームを開いたままにする必要があります。AsyncSubject と PublishSubject の組み合わせが必要なようです。組み込みのクラスでこれを達成する方法はありますか、それとも独自のサブジェクトを作成する必要がありますか?

WebServiceObservable OR CacheObservable
                  ^
                  |
             AsyncSubject
                  ^
                  |
                /   \
              /       \
            /           \
      UiObserver1   UiObserver2
4

3 に答える 3

5

少し遅い答えですが、BehaviorSubject よりもシナリオに適したオプションは、RxRelay libの BehaviorRelayです。また、さまざまな動作が必要であるが、RxHubを使用できるすべてのモジュール間で単一の対話ポイントを共有したい場合の、よりグローバルなソリューションにも使用できます。

于 2016-09-15T17:03:23.770 に答える