【知识整理】这可能是最好的RxJava 2.x 入门教程(一)
一、前言
这可能是最好的RxJava 2.x入门教程系列专栏
文章链接:
这可能是最好的RxJava 2.x 入门教程(完结版)【强力推荐】
这可能是最好的RxJava 2.x 入门教程(一)
这可能是最好的RxJava 2.x 入门教程(二)
这可能是最好的RxJava 2.x 入门教程(三)
GitHub 代码同步更新:https://github.com/nanchen2251/RxJava2Examples
为了满足大家的饥渴难耐,GitHub将同步更新代码,主要包含基本的代码封装,RxJava 2.x所有操作符应用场景介绍和实际应用场景,后期除了RxJava可能还会增添其他东西,总之,GitHub上的Demo专为大家倾心打造。传送门:https://github.com/nanchen2251/RxJava2Examples
RxJava 对大家而言肯定不陌生,其受欢迎程度不言而喻。而在去年的早些时候,官方便宣布,将在一段时间后不再对 RxJava 1.x 进行维护,而在仓库中另辟蹊径,开始对 RxJava 2.x 进行推广起来,我原本是不想写这么一套教程的,因为 RxJava 受欢迎度这么高,而且这2.x也出来了这么久,我坚信网上一定有很多超级大牛早已为大家避雷。然而很难过的是,我搜索了些时间,能搜出来的基本都是对 RxJava 1.x 的讲解,或者是 Blog 标题就没说清楚是否是2.x系列(对于我们这种标题党来说很难受)。这不,我就来抛砖引玉了。
咱们先不提别的,先为大家带点可能你早已熟知的干货——来自扔物线大神的给Android开发者的RxJava详解。
该文详细地为大家讲解了 RxJava 的优势、原理以及使用方式和适用情景,一定被众多的Android开发者视为神器。可惜,文章历史比较久远,基本都是讲解的RxJava 1.x了。
那关注的小伙伴一定会问,那我没用过 RxJava 1.x ,还有必要先学习 1.x 的内容吗?
个人觉得不必要,因为RxJava 2.x 是按照Reactive-Streams specification规范完全的重写的,完全独立于RxJava 1.x 而存在,它改变了以往RxJava的用法。
额,由于个人能力水平有限,所以对于英文基础好的,大家可以去官网查阅相关API介绍,而对于英文不那么流畅的童鞋,我也为大家准备了干货:RxJava2Examples (正在更新)。
二、与RxJava 1.x的差异
其实,我标题为入门教程,按理说应该从简单入门开始讲的,原谅我突然偏题了,因为我觉得可能大多数人都了解或者使用过RxJava 1.x(因为它真的太棒了)。虽然可能熟悉1.x 的你可以直接扒文档就可以了,但这么大的变化,请原谅我还在这里瞎比比。
1、Nulls
这是一个很大的变化,熟悉RxJava 1.x的童鞋一定都知道,1.x 是允许我们在发射事件的时候传入 null 值的,但现在我们的 2.x 不支持了,不信你试试? 大大的 NullPointerException 教你做人。这意味着 Observable<Void> 不再发射任何值,而是正常结束或者抛出空指针。
2、Flowable
在 RxJava 1.x 中关于介绍 backpressure 部分有一个小小的遗憾,那就是没有用一个单独的类,而是使用 Observable 。而在 2.x 中 Observable 不支持背压了,将用一个全新的 Flowable 来支持背压。
或许对于背压,有些小伙伴们还不是特别理解,这里简单说一下。大概就是指在异步场景中,被观察者发送事件的速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略。感兴趣的小伙伴可以模拟这种情况,在差距太大的时候,我们的内存会猛增,直到OOM。而我们的 Flowable 一定意义上可以解决这样的问题,但其实并不能完全解决,这个后面可能会提到。
3、Single/Completable/Maybe
其实这三者都差不多,Single 顾名思义,只能发送一个事件,和 Observable 接受可变参数完全不同。而Completable 侧重于观察结果,而Maybe 是上面两种的结合体。也就是说,当你只想要某个事件的结果(true or false)的时候,你可以使用这种观察者模式。
4、线程调度相关
这一块基本没什么改动,但细心的小伙伴一定会发现,RxJava 2.x 中已经没有了Schedulers.immediate() 这个线程环境,还有Schedulers.test()。
5、Function相关
熟悉 1.x 的小伙伴一定都知道,我们在1.x 中是有Func1,Func2.....FuncN的,但2.x 中将它们移除,而采用Function 替换了Func1,采用BiFunction 替换了Func 2..N。并且,它们都增加了throws Exception,也就是说,妈妈再也不用担心我们做某些操作还需要try-catch了。
6、其他操作符相关
如Func1...N 的变化,现在同样用Consumer和BiConsumer对Action1 和Action2进行了替换。后面的Action都被替换了,只保留了ActionN。
三、附录
下面从官方截图展示 2.x 相对 1.x 的改动细节,仅供参考。
【知识整理】这可能是最好的RxJava 2.x 入门教程(一)的更多相关文章
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(二)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) GitHub 代码同步更新:https://github.com/nanchen22 ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(三)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) GitHub 代码同步更新:ht ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2. ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(五)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2. ...
- 这可能是最好的RxJava 2.x 入门教程(一)
这可能是最好的 RxJava 2.x 入门教程系列专栏 文章链接: 这可能是最好的 RxJava 2.x 入门教程(完结版)[重磅推出] 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最 ...
- 【知识整理】这可能是RxJava 2.x 最好的入门教程(一)
一.前言 RxJava 对大家而言肯定不陌生,其受欢迎程度不言而喻.而在去年的早些时候,官方便宣布,将在一段时间后不再对 RxJava 1.x 进行维护,而在仓库中另辟蹊径,开始对 RxJava 2. ...
- 【知识整理】这可能是最好的RxJava 2.x 教程(完结版)
为什么要学 RxJava? 提升开发效率,降低维护成本一直是开发团队永恒不变的宗旨.近两年来国内的技术圈子中越来越多的开始提及 RxJava ,越来越多的应用和面试中都会有 RxJava ,而就目前的 ...
- js事件(Event)知识整理
事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下 鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemo ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
随机推荐
- Linux中用find命令查找当前文件夹下的.elf文件
find ./ -name "*.elf" 注意:""不能少
- sublime text3最常用快捷键
Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...
- Linux小技巧之:两种方法统计访问web网站的前10个IP
获得访问前10位的IP地址: 10.46.170.7 218.202.70.147 77.72.83.87 5.39.217.107 185.197.74.234 185.197.74.231 第二种 ...
- 4.2Python数据处理篇之Matplotlib系列(二)---plt.scatter()散点图
目录 目录 前言 (一)散点图的基础知识 (二)相关性的举例 ==1.正相关== ==1.负相关== ==1.不相关== (三)实战项目以一股票的分析 目录 前言 散点图是用于观测数据的相关性的,有正 ...
- January 11th, 2018 Week 02nd Thursday
Live, travel, adventure, bless, and don't be sorry. 精彩地活着,不停地前行,大胆冒险,心怀感激,不留遗憾. Everything we do is ...
- 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位
对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢. 一.关于POR(Power-On ...
- 【HTTP缓存】浏览器缓存理论知识
时间:2016-12-12 17:51:30 作者: zhongxia 零.前言 这里主要写的是理论,具体实践的比较少,后期写一个实践教程,内容基本都是从参考文章里面抄过来的[看完文章,顺便写做下笔记 ...
- 【Alpha - 五成胜算队】博客列表
一. 团队Alpha冲刺博客 [Alpha 冲刺] 1/12 [Alpha 冲刺] 2/12 [Alpha 冲刺] 3/12 [Alpha 冲刺] 4/12 [Alpha 冲刺] 5/12 [Alph ...
- node及socket.io实现简易websocket双向通信
技术栈: vue2.0 + node + websocket( socket.io ) 1. 安装依赖 初始化vue项目后输入下方指令安装依赖包 // 推荐cnpm安装 npm i vue-socke ...
- 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)
好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...