RxJava 中的 subscribeOn 和 observeOn 的区别

若是咱们有一段这样的序列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

  1. subscribeOn的调用切换以前的线程。
  2. observeOn的调用切换以后的线程。
  3. observeOn以后,不可再调用subscribeOn切换线程

参考来源:
谜之RxJava (三)update 2 —— subscribeOn 和 observeOn 的区别get

相关文章
相关标签/搜索