一. 执行顺序:
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:不发射数据源