首页 > 编程 > Java > 正文

RxJava的简单入门

2019-11-07 23:56:19
字体:
来源:转载
供稿:网友

Rxjava的简单入门

什么是RxJava

GitHub上是这么说的:

一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库

本质上做的就两个字 : 异步. 剩下的定语: 可观测序列,基于事件,响应式,等等 全是用来修饰异步这个词, 所以可以简单地认为他跟handler,AsyncTask一样的做异步任务的东西;

然后你要明白它好在哪儿:

本质上还是就两个字 线程切换方便,代码逻辑清楚. 现在是不是想不明白它为啥这么牛是么,来,让我用通俗的,人类可以明白的语言解释一下.

线程切换方便 之前我们切换线程,是不是先写一个Thread然后用handler来通讯,或者handler.post或者view.post.要写老多代码.然而在RxJava这儿,线程切换就两行代码: 这里写图片描述

第一行上面的在子线程中运行,第二行下面的在主线程中运行. 怎么样?爽不爽?!

代码逻辑清楚

假设我们现在有这么一个需求:

Android设备上展示已安装的第三方app列表

嗯,现在你的脑子里一定在思考应该怎么办,我个人的大致思路如下:

->调用系统api getapplicationInfoList() ->for循环过滤掉不是系统应用 ->得到 ApplicationInfo (并无卵用,我们要的是AppInfo) ->for()循环得到 AppInfo -> 由于获取ApplicationInfo、过滤数据、转换数据相对比较耗时上面的方法哦子线程 ->线程切换到主线程中更新视图

嗯,是不是感觉写完之后全是循环套循环,括号套括号,类似于这个: 无耻的借用了抛物线大大一张图

不要在意内容,只需要知道,会有辣么多的括号,for循环抱着for循环,动不动还来个if啥的,可能现在你刚写完你还能看懂,可是如果过了一个月你在看这些代码,是不是就完全不知道到底写了些什么? 蒙圈了吧!!! 哈哈

接下来就要请出RxJava了 ; 这里写图片描述

这里写图片描述

有人说了,你这代码明明是特么的变多了啊,哪儿来的简洁了,大兄弟消消气,代码简洁不一向是写得少,而是阅读起来方便.

这个RxJava的思路事实上是这样的,先create出来一个ApplicationInfoList的list,然后用filter过滤掉非系统应用,然后用map将ApplicationInfo转换成为AppInfo,然后祭出线程切换的两行神奇代码,把上面的这些放到子线程中,然后后面在主线程中更新视图.

完成,有的大兄弟还是蒙圈,没事,你看咱们不看代码 ,就看这几个操作符(create,map,filter)啥的,里面的代码不看,这样的话代码的逻辑是不是清楚了许多.

RxJava怎么写

知道了他的定义和好处,接下来就要看他怎么写了,首先声明,接下来的代码,大部分基于RxJava2,其实RxJava 1 2的用法差不多了;

因为是基于观察者模式,所以必定会有观察者和被观察者,这里的观察者可以叫做Publisher(发射源),被观察者叫做(Observersable),流程呢,大致是这个样子的:

为了形象生动呢,接下来要利用你们的想象力,现在发射源是一个 : 犯人,是的,就是监狱里的犯人; 那么接收器就是 :是的你没有猜错,就是狱警. 现在犯人(Publisher)发了一个信号 : 我要越狱 . 然后这个信号开始传播–>犯人路人甲(哦,你要越狱)–>犯人路人乙(手贱,过滤了一下(filter),变为 “我要”)–>犯人路人丙(鬼知道他做了什么,变为 “我要你” ##污##)–>狱警(WQNMLGB)接收到了信息,并且进行了处理.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表