Androidの観点からこれを求めていますが、これは一般的にRxJavaに適用されるはずです。
ベストプラクティスとして、私の見解では、短命のCompletable
、Single
、Maybe
を常に破棄し、Observable
Rxタイプを終了する必要がありますshould)短い順序で終了しますが、ユーザーがビューを閉じたときにまだ実行されている可能性がありますか? Rxチェーンが終了すると破棄されることは承知していますが、これはビューが閉じられた後に発生する可能性があります。
たとえば、HTTP GETを実行しているSingle
。呼び出しは完了しますが、ビューが破棄された後で、一時的にガベージコレクションが妨げられる場合があります。
そして、CompositeDisposable
を使用してそのようなDisposable
sを長期間表示する場合、clear()
に注意を払うか、そうでなければこれらのDisposable
sを定期的に使用して、CompositeDisposable
のサイズの無制限の増加を防ぎます。
ベストプラクティスとして、私の見解では、短命のCompletable、Single、Maybe、およびObservable Rxタイプの終了でさえも、常に破棄する必要があります。
コードを他の人と共有している場合、ベストプラクティスとして、はい、廃棄する必要がありますと言います。余分なボイラープレートのように思えるかもしれませんが、次の開発者がサブスクリプションコードにフックして、もう存在しない可能性のあるコンポーネント(Context
の後のFragment
_は切り離されます...など)。
また、CompositeDisposableを使用してこのような使い捨て品を長寿命で収集する場合、CompositeDisposableのサイズの無制限の成長を防ぐために、これらの使い捨て品を定期的にclear()または削除するように注意する必要があると思いますか?
Rxjava2では、CompositeDisposable
sに状態があることに注意してください。 dispose()
を呼び出すと、その後に追加されたDisposable
はすぐに破棄されます。ベストプラクティスとして:
CompositeDisposable
を作成します(onCreate(...)
など)dispose()
のonDestroy(...)
に注意してください。その時点までに、コールバックには実質的に値がなく、リソースを保持しているだけです。このような問題を回避するために、CompositeDisposable
またはonPause
にonDestroy
を配置することをお勧めします。