有人可以帮我解释一下下面的代码正在运行哪个调度程序吗?
Completable.complete()
.subscribeOn(http://Schedulers.io ())
.observeOn(AndroidSchedulers.mainThread())
.delay(5000, TimeUnit.MILLISECONDS)
.doOnComplete(() -> liveDataState.postValue(""))
.subscribe()
我的问题是 delay(),doOnComplete()和subscribe()哪个调度程序正在使用io
或mainThread
?
答案 0 :(得分:1)
在深入研究RxJava线程之后,最近两天发现了处理RxJava线程/计划的经验法则:
observeOn
仅适用于下游运营商subscribeOn
适用于下游和上游运营商subscribeOn
不会更改线程observeOn
确实更改了下游oerator的线程subscribeOn()
不同,我们可以多次使用observeOn()
无缝线程切换delay()
,interval()
这样的运算符具有默认调度程序,并且还可以更改下游调度程序因此,就我而言:
Completable.complete() // IO scheduler based on subscribeOn scheduler
.subscribeOn(http://Schedulers.io ())
.observeOn(AndroidSchedulers.mainThread())
.delay(5000, TimeUnit.MILLISECONDS) // Default Computation scheduler
.doOnComplete(() -> liveDataState.postValue("")) // Computation scheduler by delay scheduler
.subscribe() // Computation scheduler by delay as well
此外,您可以查看大理石图以进一步了解: