【发布时间】:2020-01-29 13:07:02
【问题描述】:
我是 Rx 世界的新手,我见过多个如何处理 Disposable 的示例,但我不太了解其中的区别。我正在使用 RxJava 2.0 (v2.2.17) 和 RxAndroid (v2.1.1)。
我的问题是 case 1 和 case 2 有什么区别?在您的应用程序中更喜欢这两种情况中的哪一种?
案例 1:
private val compositeDisposable: CompositeDisposable = CompositeDisposable()
adsApiService.getVideos()
.subscribeOn(Schedulers.io())
.observeOn( AndroidSchedulers.mainThread())
.subscribe(
{ v -> Log.d("video", v.toString()) },
{ e -> Log.d("video", e.toString()); compositeDisposable.dispose() },
{ compositeDisposable.dispose() },
{ disposable -> compositeDisposable.add(disposable)}
)
}
案例 2:
class MainActivity : AppCompatActivity() {
private var compositeDisposable: CompositeDisposable? = CompositeDisposable()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
compositeDisposable?.add(api.getVideosAds())
}
override fun onDestroy(){
super.onDestroy()
compositeDisposable?.dispose()
}
}
【问题讨论】:
-
我不知道为什么在示例 2 中您在
onPause中清除了一次性用品 -
如果你正在学习并开始在你的项目中引入 RxJava/RxAndroid。我会建议你改用/学习 kotlin 协程。
-
@xinaiz 确实是可选的。我会编辑它,这样它就不会那么混乱了。 - 我只看到了一点协程,我不知道从哪里开始,而且它似乎实现起来更长。我选择了 RxJava,因为它以后对我的项目很有用
标签: kotlin rx-java2 rx-android