序
- 本篇的目的在于 “通过代码执行的流程,以观察者模式的拉模型,对RxJava的思想进行理解”
前置知识
- 观察者模式
- RxJava基本用法
- RxJava源码大概阅读
代码执行流程
Observable.create(new ObservableOnSubscribe()).map(xxx).map(xxx).subscribeOn(xxx).observeOn(xxx).subscribe(new Observer())
- 这段代码执行的代码顺序如下:
时序图:

简略流程图

理解
- 总体分三步,第一步创建所有的被
观察者对象(observable);执行了最后的subscribe()方法的瞬间,开始第二步:从下游往上注册所有观察者(observer);紧接着第三步:从最上游发数据一直发到最下游(onNext),可以看成是观察者模式的notify操作。
- 实际上,想按常规观察者模式来看RxJava不太好理解,因为它跟常规观察者模式 “一对多,被观察者主动更新观察者” 的思想不太一样。RxJava其实是一种 “拉模型” 的观察者模式,而不是常规的 “推模型” ,区别就在于 “拉模式” 是观察者主动去拉取被观察者的数据(可以理解成git的pull操作),RxJava的“拉”操作就是
subscribe 这个方法。
- 本质上,调用
subscribe 拉取操作的瞬间,biubiubiubiu往上注册,再biubiubiubiu往下发送,最终在我们创建的Observer的onNext方法里拿到数据。
扩展:
背景:subscribeOn只会在第一次执行时生效、observeOn每次调用都生效,如何通过本文对这个现象进行解答?
相关文章:
-
2021-12-05
-
2021-07-11
-
2022-03-09
-
2021-12-05
-
2022-01-12
-
2022-12-23
-
2021-05-04
猜你喜欢
-
2021-04-08
-
2021-11-25
-
2021-04-14
-
2021-06-12
-
2021-12-27
-
2021-09-16
-
2021-06-09
相关资源
-
下载
2021-06-07
-
下载
2023-02-11
-
下载
2022-12-29
-
下载
2022-12-10