原创专栏RxJava源代码剖析

Posted 猿人部落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创专栏RxJava源代码剖析相关的知识,希望对你有一定的参考价值。

【猿人作者】何时夕
猿人部落公众号网红专栏征文活动,让你的技术和经验帮助更多人!

很多人想学习RxJava,但是总不知道如何下手,所以我之前总结了一篇RxJava的用法。这次我举了一个例子,结合源码,深入剖析了一下,RxJava运行的机制。有爱者自取啦,如果觉得我画的图不错的话,可以留个言鼓励一下,多谢!

首先我很先来看看我剖析例子的


【原创专栏】RxJava源代码剖析

可以看见我以一列Integer作为事件源,然后在create()中的OnSubscribe中循环发送事件item。


然后我调用了map(),里面的逻辑是将Integer转换成String。


然后我调用了filter(),里面的逻辑是只输出含有“1”的String。


最后我输出了所有产生的String。


如果大家对于RxJava的基本 用法有什么不清楚的地方,可以去看我上一篇分享的关于RxJava入门的博客。


然后我们就要进行源码剖析了,不过我们先来看看图中需要注意到地方。【原创专栏】RxJava源代码剖析

如图大家要记清楚这几个线代表的含义,这样才能看得懂后面图中的分析。


然后要总结一句就是:RxJava的一切操作符都是基于lift()函数,所以了解了lift()函数,可以说你就已经入门了RxJava


废话不多说上图


【原创专栏】RxJava源代码剖析

代码的解析文字都在图中,起点是左上角的红字"开始"。大家可以从这里一步步深入。

推荐的阅读方式:以粉红色的线为主干推进,绿色的分支为辅助。如果哪个源码不懂,就看黑色线所连接的代码解释。看到回调之后,即红色的线的时候,需要异常注意。最后的结束是在右下角。


注意事项: 

1. 代码的运行不是按照顺序来的,所以有些剖析的代码片段我没有写全,而是在调用的时候写全。


 2.有些比较长的源码,我精简了只剩必须的逻辑,所以在读者自己进入源码的时候,可能会发现不一样。


如果你把上面的解析仔仔细细的看了一遍,我相信你已经对RxJava已经有了比较深入的了解。不过要玩玩全全了解的话你还需要多看几遍,并且自己也进去看看。


接下来是最后一餐:简略的示意图


相信看完上面的解析,看这个还是很简单的



PS:文章版权归作者个人所有,如需转载请授权。

点击阅读原文加入猿人部落 内测群

talk is cheap. show me the code.


编程没思路?

bug搞不定?

上#猿人部落#

业余参与技术内测以及技术问题极速解答!

点击阅读原文加入 猿人部落内测群


-长按扫描关注微信-


点击 阅 读 原 文 加入 猿人部落内测群

以上是关于原创专栏RxJava源代码剖析的主要内容,如果未能解决你的问题,请参考以下文章

如何将异步任务/ rx java代码转换为rxjava2?

电子书《Java编程方法论:响应式RxJava与代码设计实战》

这可能是最好的RxJava 2.x 入门教程

借助JDK8和RxJava如何让你的业务代码跑的更快

知识整理这可能是最好的RxJava 2.x 入门教程

带你一起探究Rxjava源码,学会Rxjava竟如此简单