RxJava中create源码
来源:互联网 发布:顶级域名的两大类 编辑:程序博客网 时间:2024/06/05 12:50
第一次接触RxJava,就感觉它的链式调用非常好用。以前我们都用AsyncTask,handler来进行异步切换,相当麻烦,经常是既难写也难被读懂,而RxJava,它是一个实现异步操作的库,异步操作很关键的一点是程序的简洁性,而RxJava正是实现了这一点。
以后我会不定期的总结我在学习RxJava中的心得和大家分享,期待你们的光临,
哈哈,废话不多说,今天我们来看下create的具体的实现过程:
首先我们来上一张图:
上面这个图片就是基本的create的创建过程。
1:首先我们在create中传入了一个Onsubscribe对象,其实这个对象是一个Observable中的内部类,它是一个接口,继承自Action1,而Action1又继承自Action,Action又继承自Function,Function是一个接口。
下面这个图就是一个继承的代码关系。
2:当我们调用了create方法之后,我们就把创建的OnSubscribe传进去,进入create方法,我们可以看到,方法里面只是新建了一个Observable对象,如下图:
看这个方法,我们看到这个方法里面有个hook.OnCreate(f)的方法,其实这个方法,它返回的对象还是原来的对象f,之后new Observable,再点进去看到,他只是进行了一个赋值操作,把f赋值给了一个OnSubscribe,如下图:
3:当赋值完成之后,开始调用subscribe()方法,我们现在来看下subscribe的几个方法
里面的参数是Observer,Subscriber,Action1,其实Subscriber是Observer的一个子类,Subscriber implements Observer, Subscription,它只是多了几个方法。我们暂且使用Observer,这里先称之为Observer1,以防与下面的混淆。
当调用subscribe方法的时候,看下图:
我们看到,这个方法又new 了一个Subscriber,我们叫它observer2,并且把observer1传了进去,
看下面这个最重要的方法:
这个方法传入了observer2和当前的observable对象。
看到这个方法里面有一个onStart方法,这个方法我们可以做一些初始化的工作,在这个方法中,最重要的是onSubscribeStart这一行的代码,观察一下,可以看到,a:我们去调用了create方法创建的onSubscribe对象的call方法,也就是我们自己写的call方法,并且传入了observer2,
b:当执行call方法时,去执行了observer2的onNext方法,
c:observer2的call方法又去执行了onserver1的onNext方法,
至此,create的所有的方法都执行完毕了。
当a步骤执行出错的时候,会调用onError方法,onError和onComplete方法只会执行其中的一个。
下面贴上一张具体执行的过程的流程图:
如果不明白的地方,请留言,谢谢
- RxJava中create源码
- RxJava 源码走读之Observable.create()和subscribe()
- RxJava 源码走读之Observable.create()和subscribe()
- RxJava(一) create操作符的用法和源码分析
- RxJava 创建操作符create
- Rxjava--create流程(被观察者)
- 从源码出发了解RxJava的使用(中)
- RxJava2.0中create操作符用法和源码分析
- RxJava源码初步分析
- RxJava源码浅析
- RxJava源码分析
- RxJava源码分析
- Rxjava源码(一)
- RxJava 源码解读
- RxJava 源码笔记(1)
- Android--RxJava源码初探
- rxJava 源码 原理分析
- RxJava源码之merge
- session什么情况下会改变
- string检索
- ORB-SLAM2搭建详细过程
- hdu 1711 Number Sequence (kmp)
- The 'Apple Developer Program License Agreement' has been updated. In order to access certain members
- RxJava中create源码
- Ubuntu虚拟机NAT模式无法上网解决方案
- Java泛型应用之打造Android万能ViewHolder-超简洁写法
- Android 5.0以下系统进程守活
- scanf()取地址
- Android Studio 配置Terminal
- 简单地一个DOS端口映射程序
- Json数据结构比对
- VC++60 第一章 创建应用程序的四个步骤