RxJava2のCompositeDisposableのdisposeとclearの使い分け
背景
ViewModelをDaggerでInjectしたときに、ActivityのonDestoryでCompositeDisposableをdispose()していたら不具合が出た。
というのも、ActivityがonDestoryされてもViewModelのインスタンスはAppilcationのライフサイクルで生成と破棄されるので、ViewModelのインスタンスは生きていて、なおかつdispose()したらそのCompositeDisposableは再利用できないため。
ということで使い分け。
CompositeDisposable.dispose()
は一度呼び出すと再利用できない。
CompositeDisposable.clear()
は一度呼び出しても再利用できる。
DaggerのActivityScopeあたりでやったほうがいいことなのかもしれないけれど。