Android 架构师之响应式编程 RxJava 操作符源码分析与实现
操作符简介
操作符:将发出的数据进行处理并再发送
变化传播–通过操作符实现变化,并能向下传播
Android 架构师之响应式编程 RxJava 操作符源码分析与实现
1.RxJava1 操作符源码分析
1.Func1 接口
2.Operator 接口
1.1RxJava1 实例
运行
1.2RxJava1 操作符源码
Android 架构师之响应式编程 RxJava 操作符源码分析与实现
RxJava1 中 OnSubscribeMap 类
RxJava1 中 OnSubscribeLift 类
1.3 变换的原理(核心操作符 lift):
1. 接收原 OnSubscribe 的当前的 Operator
2. 创建一个新的 OnSubscribe 并返回新的 Observable
3. 用新的 Subscriber 包裹旧的 Subscriber
4. 在新的 Subscriber 里做完变换再传给旧的 Subscriber
分析
核心实现使用了代理机制
Android 架构师之响应式编程 RxJava 操作符源码分析与实现
2.RxJava2 操作符源码分析
2.1.RxJava2 实例
运行
2.2.RxJava2 操作符源码
Function 接口
ObservableMap :无背压
1.ObservableMap 继承了 AbstractObservableWithUpstream 抽象类
2. 利用了 AbstractObservableWithUpstream 中 subscribeActual 方法
3. 用原 Observable 去 subscribe 变换后的 Observer
FlowableMap: 有背压
1.FlowableMap 继承了 AbstractFlowableWithUpstream
2. 利用了 AbstractFlowableWithUpstream 中的 subscribeActual 方法
3. 用原 Flowable 去 subscribe 变换后的 Subscriber
FlowableLift
2.3Operator 接口
分析
RxJava2 有背压和无背压核心实现使用了代理机制
3.RxJava1 操作符功能仿写实现
Operator 接口实现
lift 操作符
map 操作符
调用
Log 输出
3.RxJava2(无背压) 操作符功能仿写实现
CallerWithUpstream(类似于 AbstractObservableWithUpstream)
map 操作符
CallerOperator 接口
相关代码:
4.RxJava2(有背压) 操作符功能仿写实现
TelephonerOperator 接口
TelephonerWithUpstream(类似于 AbstractObservableWithUpstream)
相关源码