observeOn :此方法只是更改下游所有运营商的线程(https://medium.com/upday-devs/rxjava-subscribeon-vs-observeon-9af518ded53a)
在调用API时,我想在IO线程上运行与服务器的通信,并希望在mainThread上处理结果 .
我在许多教程中看到了下面的代码,毫无疑问它是正确的 . 但我的理解是相反的,所以我想知道我误解了什么 .
requestInterface.callApi()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe())
observeOn(AndroidSchedulers.mainThread())
:observeOn更改下游所有操作符的线程,但在本例中,实际调用API函数是否高于observeOn?
.subscribeOn(Schedulers.io())
:奇怪的是,它需要在主线程上订阅,但在IO线程上订阅?
请告诉我我的误解是什么?
3 回答
基本,我们会有
例
来自http://reactivex.io/documentation/operators/subscribeon.html
SubscribeOn
ObserveOn (影响2件事)
示例
这是一个示例:
subscribeOn - >调用将执行调用的线程类似于调用asynctask observeOn - >其中响应将被观察到进程的ui线程
subscribe - >观察者回调
subscribeOn(Schedulers.io()) :这告诉Observable在后台线程上运行任务
observeOn(AndroidSchedulers.mainThread()) :这告诉Observer接收android UI线程上的数据,以便您可以执行任何与UI相关的操作 .