RxJava並不會自動防止這種狀況發生,好在它能夠很容易地防止內存泄露。Observable.subscribe()
方法會返回一個Subscription
對象,這個對象僅僅有兩個方法:isSbscribed()
與unsubscribe()
。你能夠在Activity/Fragment的onDestroy
方法中調用Subscription.isSubscribed()
檢測是否這個異步任務仍在進行。若是它仍在進行,則調用unsubscribe()
方法來結束任務,從而釋放其中的強引用,防止內存泄露。若是你使用了多個Observable
與Subscriber
,那麼你能夠將它們添加到CompositeSubscription
中,並調用CompositeSubscription.unsubscribe()
結束全部的任務。android
參考:https://github.com/hehonghui/android-tech-frontier/blob/master/issue-34/%E5%9C%A8Android%E5%BC%80%E5%8F%91%E4%B8%AD%E4%BD%BF%E7%94%A8RxJava.mdgit