web-dev-qa-db-ja.com

アクティビティでRetrofitとRxJava / RxAndroidを使用して回転を処理する方法

here と読みます。ローテーションを処理するためにグローバルキャッシュを使用できます。

これを防ぐには、キャッシュを使用するか、Observable演算子を再生します。また、Observableがアクティビティライフサイクルで何らかの形で生き残るようにします(たとえば、グローバルキャッシュ、フラグメントなどに保存します)。

しかし、それを達成する方法は?誰かがそれを行う方法の例を教えてくれますか?または、構成の変更を処理するためのより良いアプローチを知っていますか?

編集:

今のところ多くの方法を見つけましたが、RxBus実現を使用することになりました。 RxBusを使用する良い例は here です。

Android application。Toで状況の種類にどのように取り組むかを実験するために、デモアプリケーション( https://github.com/pmellaaho/RxApp )を作成しました。つまり、Activityのシングルトンモデルを使用して、ネットワークから応答を取得します。これにより、応答をキャッシュし、複数のUIコンポーネントからデータにアクセスし、保留中の要求をサブスクライブし、自動UIテストのモックデータを提供することもできます。

5
pmellaaho

最近、RxJava2ストリーム中のより良い回転を処理するために、LoaderをConnectableObservableと組み合わせて使用​​しました。 Medium Post を作成し、私のアプローチを詳細に説明しました。

基本的に、observable(ConnectableObservable)をLoaderに入れる必要がありますTransformerを使用して、破棄された後、アクティビティ/フラグメントが再開したときに再サブスクライブします。

0
Phil