若是咱們有一段這樣的序列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