在日常的Android
开发中,我们部分项目会使用到Rx
系列的开源库。如果我们对Rx
系列的类使用不恰当,会导致内存泄漏问题。
RxLifecycle
这个库帮我们管理Rx
系列开源的订阅,防止出现内存泄漏的问题。
RxLifecycle的引入
基础库:
implementation 'com.trello.rxlifecycle4:rxlifecycle:4.0.2'
可选择库:
// If you want to bind to Android-specific lifecycles
implementation 'com.trello.rxlifecycle4:rxlifecycle-android:4.0.2'
// If you want pre-written Activities and Fragments you can subclass as providers
implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2'
// If you want pre-written support preference Fragments you can subclass as providers
implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2'
// If you want to use Android Lifecycle for providers
implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2'
// If you want to use Kotlin syntax
implementation 'com.trello.rxlifecycle4:rxlifecycle-kotlin:4.0.2'
// If you want to use Kotlin syntax with Android Lifecycle
implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle-kotlin:4.0.2'
截止我发布博客,开源库目前版本是4.0.2
。如果想要使用最新的版本,可以看看开源库wiki
RxLifecycle的使用
可以在生命周期发出任何内容时进行绑定:
myObservable
.compose(RxLifecycle.bind(lifecycle))
.subscribe();
或者可以绑定到特定生命周期事件发生的时间:
myObservable
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe();
或者可以让 RxLifecycle 确定结束序列的适当时间:
myObservable
.compose(RxLifecycleAndroid.bindActivity(lifecycle))
.subscribe();
Kotlin调用RxLifecycle
myObservable
.bindToLifecycle(myView)
.subscribe { }
myObservable
.bindUntilEvent(myRxActivity, STOP)
.subscribe { }