RxJava2のCompositeDisposableのdisposeとclearの使い分け

背景

ViewModelをDaggerでInjectしたときに、ActivityのonDestoryでCompositeDisposableをdispose()していたら不具合が出た。
というのも、ActivityがonDestoryされてもViewModelのインスタンスはAppilcationのライフサイクルで生成と破棄されるので、ViewModelのインスタンスは生きていて、なおかつdispose()したらそのCompositeDisposableは再利用できないため。 ということで使い分け。

CompositeDisposable.dispose() は一度呼び出すと再利用できない。 CompositeDisposable.clear() は一度呼び出しても再利用できる。

DaggerのActivityScopeあたりでやったほうがいいことなのかもしれないけれど。