RxJava 中的 subscribeOn 和 observeOn 的区别
如果我们有一段这样的序列
Observable
.map // 操作1
.flatMap // 操作2
.subscribeOn(io)
.map //操作3
.flatMap //操作4
.observeOn(main)
.map //操作5
.flatMap //操作6
.subscribeOn(io) //!!特别注意
.subscribe(handleData)
假设这里我们是在主线程上调用这段代码,那么
操作1
,操作2
是在io线程上,因为之后subscribeOn
切换了线程
操作3
,操作4
也是在io线程上,因为在subscribeOn
切换了线程之后,并没有发生改变。
操作5
,操作6
是在main线程上,因为在他们之前的observeOn
切换了线程。
特别注意那一段,对于操作5
和操作6
是无效的
再简单点总结就是
subscribeOn
的调用切换之前的线程。observeOn
的调用切换之后的线程。observeOn
之后,不可再调用subscribeOn
切换线程