

タイトルそのままなのですがAndroidでFirstActivityで非同期処理を開始し、遷移させたSecondActivityで結果を受け取るパターンについて、RxJavaやRxAndroidではどのように結果を取得するようにしているのでしょうか？そういうパターンが考慮されたライブラリではなく使う側でうまく作りこむしかないのでしょうか？ご教授ください。


CC BY-SA 3.0
2017-02-02T23:54:29.743
32353
2017-02-03T01:07:38.073
15237
question
android
AndroidでRxJavaをつかった画面遷移先での結果取得


実装のアプローチはいくつかあると思うのですが、私がよく使うのは次の２つです。

  1. Applicationクラスを経由させる(もしくはグローバル変数的なもの) 
    * FirstActivityでObservableをHotな状態にする(replayやBehaviorSubjectをよく使います）
    * ApplicationクラスにObservableを渡し、その際にキーを発番する
    * 画面遷移の後でSecondActivityがキーを使ってApplicationクラスから取り出す
  2. サービスを経由させる 
    * 非同期処理自体の責務を負うServiceを作る
    * FirstActivityからServiceに通信処理の開始を依頼する
    * SecondActivity側でbindし、Observableとして扱えるようにラップする

1は実装が簡単な反面、Activityの遷移が正しく行われなかった場合のハンドリングが面倒になるのでクリティカルな処理には向かないと思います。2はServiceが責務を背負える反面、実装が難しいと思います。  
私が実装するときは、リトライが聞くものは1で、精密な状態管理が必要なものは2のアプローチを使うようにしています。


CC BY-SA 3.0
2017-02-03T01:07:38.073
32355
2017-02-03T01:07:38.073
8494
32353
answer