2016-06-14 5 views
0

RxJavaとRetrofitの新機能です。私は複数のplaces.Iにこの観測を購読することができますどのように1回のネットワークリクエストに対する複数のサブスクリプションRetrofitとRXJava?

Observable <User> login(String userName, String password); 

が複数のアンドロイド活動にそれをサブスクライブしたいと、私が観察返すレトロフィットサービスを考えてみましょう。

例:リンク先ページとログインページアクティビティがあるとします。ランディングページの後にログインページが表示されます。ログインページでネットワークリクエストを行うと、ログインページとランディングページの両方で結果が確認されます。

これはどのように達成できますか?

答えて

4

あなたはlogin(username,pw).cache() - cache()のソースへの自動接続を観測可能にし、放出されたすべてのアイテムをそのサブスクライバに再生します。それは、改造が行うように、単一の結果を放出する観測値に対してはうまく機能する。もう1つのオプション - replay()は、ConnectableObservableを返し、ConnectableObservable.connect()が呼び出されたときにのみソースにサブスクライブします。多くの便利なオーバーロード(replay(bufferSize),replay(time, TimeUnit)など)があり、キャッシュするアイテムの数を制御できます。

+0

これは正しい応答です。しかし、Observablesの固有の制限のためにうまく動作しないため@Sushantに、彼が念頭に置いているObservables-as-Notificationsモデルを再作成するよう促すでしょう(どのようにユースケース "logon - logoff - 異なるログオン情報"彼のデザインで働く?)。代わりに私はイベントバスを使用することをお勧めします。 –

関連する問題