在 RxJava 1 中,有 CompositeSubscription,但在 RxJava2 中不存在,在 rxJava2 中有一些 CompositeDisposable。如何在 RxJava2 中使用 CompositeDisposable 或 Disposable?
原文由 anand gaurav 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 RxJava 1 中,有 CompositeSubscription,但在 RxJava2 中不存在,在 rxJava2 中有一些 CompositeDisposable。如何在 RxJava2 中使用 CompositeDisposable 或 Disposable?
原文由 anand gaurav 发布,翻译遵循 CC BY-SA 4.0 许可协议
CompositeDisposable
处理后不可重复使用。如果你想同步 disposable 生命周期与 Android Activity 生命周期,可以通过制作一个简单的包装器来对应。
class AndroidDisposable {
private var compositeDisposable: CompositeDisposable? = null
fun add(disposable: Disposable) {
if (compositeDisposable == null) {
compositeDisposable = CompositeDisposable()
}
compositeDisposable?.add(disposable)
}
fun dispose() {
compositeDisposable?.dispose()
compositeDisposable = null
}
}
如何使用:
class MainActivity : AppCompatActivity() {
private disposable = AndroidDisposable()
override fun onStart() {
super.onStart()
disposable.add(/* Some disposable */)
}
override fun onStop() {
disposable.dispose()
super.onStop()
}
}
原文由 Seroj Grigoryan 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
参考文章