爱美容
当前位置: 首页 美容百科

java核心知识体系之基础总结篇四(这可能是最好的RxJava)

时间:2023-06-10 作者: 小编 阅读量: 1 栏目名: 美容百科

该文详细地为大家讲解了RxJava的优势、原理以及使用方式和适用情景,一定被众多的Android开发者视为神器。可惜,文章历史比较久远,基本都是讲解的RxJava1.x了。这意味着Observable<Void>不再发射任何值,而是正常结束或者抛出空指针。而在2.x中Observable不支持背压了,将用一个全新的Flowable来支持背压。

本教程将分为六篇文章为大家讲解Rxjava常用api,简单易懂,超级实用,无论你是大神还是菜鸟,该系列文章对你来说都是一道上好佳肴。持续关注吧。

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

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

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

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

正文

为了满足大家的饥渴难耐,GitHub将同步更新代码。http主要包含基本的代码封装,RxJava 2.x所有操作符应用场景介绍和实际应用场景,后期除了RxJava可能还会增添其他东西,总之,GitHub上的Demo专为大家倾心打造。传送门:所有连接都在文章末尾

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 的你可以直接扒文档就可以了,但这么大的变化,请原谅我还在这里瞎比比。

  • s

    这是一个很大的变化,熟悉 RxJava 1.x 的童鞋一定都知道,1.x 是允许我们在发射事件的时候传入 值的,但现在我们的 2.x 不支持了,不信你试试? 大大的 PointerException教你做人。这意味着Observable<Void>不再发射任何值,而是正常结束或者抛出空指针。

  • 2、Flowable

    在 RxJava 1.x 中关于介绍 backpressure部分有一个小小的遗憾,那就是没有用一个单独的类,而是使用Observable。而在 2.x 中Observable不支持背压了,将用一个全新的 Flowable 来支持背压。

    或许对于背压,有些小伙伴们还不是特别理解,这里简单说一下。大概就是指在异步场景中,被观察者发送事件的速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略。感兴趣的小伙伴可以模拟这种情况,在差距太大的时候,我们的内存会猛增,直到OOM。而我们的 Flowable 一定意义上可以解决这样的问题,但其实并不能完全解决,这个后面可能会提到。

  • Single/Completable/Maybe

    其实这三者都差不多,Single顾名思义,只能发送一个事件,和Observable接受可变参数完全不同。而Completable侧重于观察结果,而Maybe是上面两种的结合体。也就是说,当你只想要某个事件的结果(true or false)的时候,你可以使用这种观察者模式。

  • 线程调度相关

    这一块基本没什么改动,但细心的小伙伴一定会发现,RxJava 2.x 中已经没有了 Schedulers.immediate这个线程环境,还有Schedulers.test

  • Function相关

    熟悉 1.x 的小伙伴一定都知道,我们在1.x 中是有 Func1Func2.....FuncN的,但 2.x 中将它们移除,而采用Function替换了Func1,采用BiFunction替换了Func 2..N。并且,它们都增加了 throws Exception,也就是说,妈妈再也不用担心我们做某些操作还需要 try-catch 了。

  • 其他操作符相关

    Func1...N的变化,现在同样用ConsumerBiConsumerAction1Action2进行了替换。后面的Action都被替换了,只保留了ActionN

附录

下面从官方截图展示 2.x 相对 1.x 的改动细节,仅供参考。

文章内的超链接:

RxJava2Examples (正在更新 )

https://github.com/nanchen2251/RxJava2Examples

给Android开发者的 RxJava 详解:

https://gank.io/post/560e15be2dca930e00da1083

近期文章:

等等,先别走!「码个蛋」又有活动了!参与活动不但可以培养自己的好习惯,还能拿到「码个蛋」IP系列专属奖品,速度要快...

今日问题:

各位猿佬们,Rxjava都上了么?哪些场景让你爱上Rxjava?

留言格式:

打卡 x 天,答:xxx。

告诉你一个小技巧:

只需3步,你将不会错过任何一篇文章!

    推荐阅读
  • 詹天佑主持修建了什么铁路(詹天佑主持修建的铁路叫什么)

    以下内容大家不妨参考一二希望能帮到您!詹天佑主持修建了什么铁路京张铁路,京张铁路为詹天佑主持修建并负责的中国第一条铁路,它连接北京丰台,经八达岭、居庸关、沙城、宣化至河北张家口,全长约200千米,1905年9月开工修建,于1909年建成。它是中国首条不使用外国资金及人员,由中国人自行完成,投入营运的铁路。这条铁路工程艰巨。现为北京至包头铁路线的首段,为京包铁路。

  • 牛剖层革是不是真皮(牛剖层革是真皮吗)

    牛剖层革属于二层皮。牛二层皮是将牛皮的纤维组织较疏松的二层部分,经化学材料喷涂或覆上PVC、PU薄膜进行加工制作而成。牛二层皮皮料很厚很光滑,用手按下去没有皱纹。牛皮是动物牛的表皮,因皮质细腻,牢固耐用,常被用于工艺品。其价格较便宜,利用率高。穿久后会龟裂,严重的会断裂。二层皮表面和头层皮,是无法区分的。二层皮也要分粒面皮和软面皮和荔枝纹牛皮。粒面皮,比较光滑光亮无皱纹。越好的头层皮越薄。

  • 画眼线技巧图解(画眼线的四个技巧详解)

    下面内容希望能帮助到你,我们来一起看看吧!画眼线技巧图解眼线笔在使用前一定要削好,尽量让眼线笔尖一点,这样画出来的线条会比较细,看起来更加锋利。眼线分为外眼线和内眼线两种,新手更适合隐秘点的内眼线,这样即使画不好,也没人能看的出来。当你俯视镜子的时候,可以看见自己的眼睫毛,然后挨着眼睫毛去描绘线条就可以了。

  • 轩字取名的寓意是什么(轩有哪些意思)

    轩字取名的寓意是什么轩字取名的含义:指好的气质,优雅、高尚、温文尔雅。《说文解字》中解释:“轩,曲輈藩车。”有窗的长廊或小屋,现多用作书斋、茶馆的字号。指高大,又因高大引申为气质好。轩是中华姓氏之一。历代以来百家姓记载轩辕为复姓,后省作轩姓。源于姬姓,出自轩辕黄帝,属于以先祖名字为氏。

  • 花蛤里面的黑色像屎能吃吗(花蛤里面的黑色是什么)

    花蛤里面的黑色像屎能吃吗?接下来我们就一起去研究一下吧!花蛤里面的黑色像屎能吃吗黑色部分有两种可能:是花蛤的消化系统,这部分是不可以食用的;那是它的内脏,俗称黄,就像蟹黄那种性质,但味道就大步一样了。关键就是吃能吃,不会有什么害处。里面的有泥沙,是没有处理干净的杂质,这种瓜情况是不可以食用的。

  • 短袖条纹衬衫搭配各种穿法(不要再穿T恤了今秋流行)

    衬衫全塞是比较基础的穿法,只要“塞”就对了,不过全塞的穿法比较适合本身体型瘦削的仙女,不然反而会直接暴露小肚子等身材缺点。版型比较宽大的衬衫也不太适合全塞,会加重整体的臃肿感,非常显胖。对于中长款衬衫来说,全部塞进下装绝对不是一个好选择,Liya一般都是只塞衬衫的前摆,还能给人随性不刻意的时髦感。短款衬衫前塞就没有太多的讲究,不需要太多的技巧,搭配牛仔裤随便一塞就慵懒感十足,敲有范儿。

  • 中式台球十大技巧(关于中式台球的十大技巧)

    中式台球十大技巧打十六彩讲研“势”,下过围棋的人都知道,其制胜之道不在于计较几个棋子的得失,而是在于占势。放弃几个棋子,是为了获得全局的控制权。十六彩如棋,越是高手,对“势”的掌控越是精深,非常不好的球势,他们往往一杆就能占尽优势。当你清不了台的时候,你的球剩的越少,优势越少。打十六彩时,放松很重要。大部分人认为自己能一杆清台的时候,其实都是在骗自己。

  • 2022浙江理工大学科技与艺术学院录取分数线

    目前,绍兴文理学院、浙江农林大学暨阳学院、浙江工业大学之江学院、绍兴文理学院元培学院、浙江理工大学科技与艺术学院等在绍高校普通类平行第一段已完成招生计划。

  • 为什么鸭子一只养不活 鸭子养一只能养活吗

    很多人在养育鸭子的时候,会发现一只鸭子是养不活的,那么到底是什么原因让一只鸭子养不活呢?实际上,一只小鸭子养不活多半是因为饲养方式不正确。喂食的时候要选择多种多样的品种,配料的品种也要尽可能多选择一些,这样才可以在营养上有互相补充的效果,有利于鸭子的健康成长。

  • 换路由器怎么重新设置(新换的路由器怎么重新设置连接)

    我们一起去了解并探讨一下这个问题吧!启动设备后,打开浏览器,在地址栏中输入192.168.1.1进入无线路由器设置界面。登录成功之后选择设置向导的界面,默认情况下会自动弹出。根据设置向导一步一步设置,选择上网方式,选择第一项PPPoE。输入从申请到的账号和密码,完成后直接下一步。输入正确后会提示是否重启路由器,选择是确认重启路由器,重新启动路由器后即可正常上网。