前言:
其實(shí)RxJava引起的內(nèi)存泄漏是我無意中發(fā)現(xiàn)了,本來是想了解Retrofit與RxJava相結(jié)合中是如何通過適配器模式解決的,結(jié)果卻發(fā)現(xiàn)了RxJava是會(huì)引起內(nèi)存泄漏的,所有想著查找一下資料學(xué)習(xí)一下如何解決RxJava引起的內(nèi)存泄漏,就查到了利用Rxlifecycle開源框架可以解決,今天周末就來學(xué)習(xí)一下如何使用Rxlifecycle。
引用泄漏的背景:
RxJava作為一種響應(yīng)式編程框架,是目前編程界網(wǎng)紅,可謂是家喻戶曉,其簡潔的編碼風(fēng)格、易用易讀的鏈?zhǔn)椒椒ㄕ{(diào)用、強(qiáng)大的異步支持等使得RxJava被廣泛使用,它通過線程調(diào)度器更容易控制和切換線程,如果該工作線程還沒執(zhí)行結(jié)束就退出Activity或者Fragment,就會(huì)Activity或者Fragment無法釋放引起內(nèi)存泄漏。
什么是Rxlifecycle?
rxlifecycle是trello開發(fā)的用于解決RxJava引起的內(nèi)存泄漏的開源框架。
compile 'com.trello:rxlifecycle:1.0'
// If you want to bind to Android-specific lifecycles
compile 'com.trello:rxlifecycle-android:1.0'
// If you want pre-written Activities and Fragments you can subclass as providers
compile 'com.trello:rxlifecycle-components:1.0'
// If you want to use Navi for providers
compile 'com.trello:rxlifecycle-navi:1.0'
// If you want to use Kotlin syntax
compile 'com.trello:rxlifecycle-kotlin:1.0'
根據(jù)自己的需要添加 我這里使用了如下兩個(gè)
compile 'com.trello:rxlifecycle:1.0'
compile 'com.trello:rxlifecycle-components:1.0'