若是咱们有一段这样的序列segmentfault
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
是无效的
再简单点总结就是code
subscribeOn
的调用切换以前的线程。observeOn
的调用切换以后的线程。observeOn
以后,不可再调用subscribeOn
切换线程参考来源:
谜之RxJava (三)update 2 —— subscribeOn 和 observeOn 的区别get