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

相關文章
相關標籤/搜索