2017-11-01 2 views
2

私の質問はHow to use CompositeDisposable of RxJava 2?と重複することがありますが、疑問をもう一度尋ねます。 は受け入れ答え私の場合はCompositeDisposableでdisposeとclearを呼び出す場合

 // Using clear will clear all, but can accept new disposable 
       disposables.clear(); 
     // Using dispose will clear all and set isDisposed = true, so it will not accept any new disposable 
       disposables.dispose(); 

によると、私は私の意見として(MVPで表示層)の断片を使用していますし、いくつかのシナリオでは、私がbackstackに活性な断片を追加し、実際にフラグメントを殺しませんその視点のみつまり、onDestroyViewのみが呼び出され、onDestroyは呼び出されません。そして、後で私はバックスタックにある同じ断片に戻ることができるので、その見解だけが再作成されています。 私はサブスクリプションを保持しているBaseFragmentのメンバーとしてCompositeDisposableを持っています。

私の質問は、clearCompositeDisposableに、毎回onDestroyViewに電話する必要がありますか?ビューが再開されると、再びサブスクリプションを取ることができるようになりますか? onDestroydisposeに電話してください。そうすれば、断片自体が破壊されたときに消耗品をもう取る必要はありませんか?

適切な処理方法が間違っている場合。 cleardisposeを呼び出す必要がある場合

答えて

1

そうだね、あなたは、対応するビューが作成されるたびに、新しいCompositeDisposableを作成するから自分を救うが、代わりにonCreate/onDestroyライフサイクルメソッドに結び付け、単一のインスタンスとしてCompositeDisposableの治療の一環として集約使い捨てを扱うことができますフラグメントビューはclearonDestroyViewに呼び出します。

関連する問題