Rxjava初步理解
来源:互联网 发布:淘宝卖刀具 编辑:程序博客网 时间:2024/06/17 07:20
本质就是通过回调实现
Observable被观察对像 成员变量onSubscribe
Subscriber 观察对象
订阅:
Observable.subscribe先调用Subscriber.onStart() 然后调用onSubscribe中的Call方法,然后在Call方法中调用Subscriber.onNext,Subscriber.onCompleted
,subscriber.onError
Map操作符: 对以前的subscriber的封装,在mapObservable中的call方法中进行封装
Observable<T> source原先的Observable
Observable mapObservable现在的Observable
OnSubscribe--->OnSubscribeMap
Subscriber --->MapSubscriber对目标subscriber的包装
订阅:mapObservable.subscribe
先调用OnSubscribeMap中的call,然后call方法中根据Subscriber生成MapSubscriber,然后source.unsafeSubscribe,source中的OnSubscribe就会调用MapSubscriber
中的onStart onNext onError方法,然需 MapSubscriber中相应的方法会先完成自己的转换,然后调用以前Subscriber 方法
subscribeOn(AndroidSchedulers.mainThread())
AndroidSchedulers.mainThread()得到一个mainThreadScheduler由LooperScheduler创建
AndroidSchedulers提供一个工作的线程,调用OperatorSubscribeOn中的call方法创建新的SubscribeOnSubscriber。SubscribeOnSubscriber对原来的subscriber进行简单的代理并取消工作线程的的订阅
subscribeOn会创建一个新的Observable命名为OperatorObservable
Observable<T> source原先的Observable
SubscribeOn----->OperatorSubscribeOn<T>(source, scheduler, requestOn)
订阅:
OperatorObservable.subscribe调用OperatorSubscribeOn中的call方法
1、根据scheduler创建Worker取名为inner(source.onSubscribe具体工作的线程)
2、创建SubscribeOnSubscriber取名parent (使现了Subscriber与Action接口) 对原始的Subscriber的简单的包装
3、执行inner.schedule(parent);
执行会调会在Worker所在的线程中调用parent中的call方法,然后调用source.unsafeSubscribe(SubscribeOnSubscriber),接着调用source.onSubscribe中的Call方法。
这样就实现了onSubscribe执行线程的切换。
阅读全文
0 0
- Rxjava初步理解
- RxJava的android初步快速学习与理解使用
- Rxjava 理解
- RxJava初步学习总结
- RxJava源码初步分析
- Android RxJava 初步接触
- RxJava的初步认识
- RxJava初步接触学习
- Android RxJava初步认识
- RxJava的初步学习
- RxJava-操作符 初步学习
- RxJava初步探路(基础篇)
- RxJava的初步使用(一)
- Retrofit结合Rxjava初步使用
- 我理解的RxJava
- RxJava的理解
- 理解 RxJava 线程模型
- RxJava学习理解
- 编写Java程序,使用while循环语句计算1+1/2!+1/3!···1/20!之和。
- 剑指offer面试题18-:树的子结构
- 网络编程(2)—UDP
- shell程序练习
- eclipse 去掉无用的 validation 优化eclipse
- Rxjava初步理解
- 打瓶颈,破性能,性能大牛教你怎么玩转性能测试
- json的三种反序列方式
- 【快速幂、组合数学】BZOJ1008 [HNOI2008]越狱
- linux断点续传目录
- 为PaaS云平台提供整合的全栈式监控
- centos7 Apache编译、安装
- python中 __name__及__main()__的妙处
- 【代码笔记】iOS-键盘自适应弹出