一. 執行順序:
1. 先執行doOnSubscribe(), 當有多個doOnSubscribe()方法時,則由下至上的順序執行,其執行所在線程由其後面的subscribeOn()來指定;若沒有subscribeOn()指定,則執行的線程和本身所在線程一致。
2. 再執行observable.create()裏的call()方法,其執行所在線程由其後面的subscribeOn()來指定;若沒有subscribeOn()指定,則執行的線程和本身所在線程一致。
3.再執行doOnNext(),其執行所在線程由其前面的observeOn()來指定, 若沒有observeOn()指定,則執行的線程和observable.create()裏的call()所在線程一致。並不改變數據流。
4. 如果觸發onError()且有doOnError()則先執行 doOnError()。
5. 最後執行subscribe()裏的onNext(), onError(), onComplete(),其執行所在線程由其前面的observeOn()來指定, 若沒有observeOn()指定,則執行的線程和observable.create()裏的call()所在線程一致。
二. observable產生的幾種方式:
1. create
2. just(<T>, <T>, ...)
3. from(List<T>)
4. ...
三. observable的幾種變種:
1. single: 只發射1個數據源
2. flowable:可發射0-N個數據源,支持背壓(與observable唯一的區別)
3. completable:不發射數據源
4. maybe:發射0/1個數據源
四. subscribe()裏可以的參數
1. subscribe(observer)
2. subscribe(onNextConsumer)
3. subscribe(onNextConsumer, onErrorConsumer)
4. subscribe(onNextConsumer, onErrorConsumer, onCompleteConsumer)
五.subscribeOn和observeOn
1. subscribeOn 作用於該操作符之前的 Observable 的創建操符作以及 doOnSubscribe 操作符 ,換句話說就是 doOnSubscribe 以及 Observable 的創建操作符總是被其之後最近的 subscribeOn 控制 。
2. observeOn作用於該操作符之後操作符直到出現新的observeOn操作符
詳見http://blog.csdn.net/xx326664162/article/details/51967967
六. 操作符
1. flatMap 很重要的一個用途就是用來解決嵌套網絡請求,observable1網絡請求完成之後,再次發射數據observable2網絡請求
2. map 只是在數據流上改變了數據的值,繼續往前走,本身並不發射數據
3. http://blog.csdn.net/u014099894/article/details/51626670