私は、ユーザが購読しているトピックに基づいて通知を受け取ることができるアプリを持っています。ワークフローは以下の通りです: 実行中のRxJavaストリームの変更
- ユーザーログをすべてのネットワーク要求直列化される。私は/解除加入しようとしている、私は以下のような流れを書くことができ、正確なものをトピック初期化時に知っていた場合:
loginObservable.subscribeOn(Schedulers.io()) .flatMap(user -> registerApp(appId)) .flatMap(o -> subscribeToTopic("topic1")) .flatMap(o -> unsubscribeFromTopic("topic2")) .observeOn(AndroidSchedulers.mainThread()) .subscribe()
事は、ユーザーがさえ/サブスクライブ・アプリケーションのライフサイクルの任意の時点で解除可能ということです登録が成功する前に私は観測可能なリストを維持することができ、
onComplete()
の手ですべてのリクエストをシリアライズすることができますが、これはRx-ishのようには聞こえません。私はもっと簡潔な方法でそれをやり遂げることができますか?次のようなもの:observable = loginObservable.subscribeOn(Schedulers.io()) .flatMap(user -> registerApp(appId)) .observeOn(AndroidSchedulers.mainThread()) .subscribe() //later observable.flatMap(o -> subscribeToTopic("topic1")) .subscribe() //even later observable.flatMap(o -> unsubscribeFromTopic("topic2")) .subscribe()
'switchMap'は確かに、私は質問を編集したため不要'switchMap'を' flatMap'で置き換える – mbonnin
これは、アプリが通知サービスに登録される前に起こるUIインタラクションに対処していますか?私はReplaySubjectを使うことを考えていました。 – mbonnin