現在、RxJava と RxBinding を使用してビューの変更を観察するプロジェクトに取り組んでいます。onResume
これは、ライフサイクル イベントに簡単にアクセスできるフラグメントやアクティビティに対して非常にうまく機能していますonPause
。
最近、ビューのリストを表示する RecyclerView を導入しました。それらはすべて、サブスクライブしたいデータ ストリームにすることができます。私が直面した問題は、作成時に CompositeSubscription オブジェクトをアクティビティ/フラグメントからアダプタを介してビュー ホルダーに渡すことです。もちろん、うまく機能しません。ユーザーが画面を離れて戻ってきたとき (onPause
およびonResume
呼び出されているとき)、ViewHolders は再作成されません。
解決策は、アダプター、レイアウト マネージャー (既存のビュー ホルダーにアクセスするため) のライフサイクルを認識させることですが、ロジック レイヤー間でこれらのサブスクリプション参照を渡すために追加のコードを記述する必要があります。
しかし、私の同僚の 1 人がイベント バスを使用することを提案しました。これは、イベントのサブスクリプションをアクティビティ/フラグメントに渡すために使用され、そこで CompositeSubscription に追加され、すべてが一緒にサブスクライブ解除されます。さらに、ユーザーが戻ってきたときに、自分自身をサブスクライブするようにビュー ホルダーに通知できます。
このアプローチについてどう思いますか?このアプローチで注意すべき落とし穴はありますか?