android中为什么使用RxJava

1.RxJava在android生产环境中的使用

想必学习RxJava的同学,在学习完操作符之后,最想知道的是怎么将其用在我们平时的开发当中去,本节就带大家去了解一下怎么去应用RxJava。

RxJava近年来很流行, 主要优势是流式操作, 可以处理并行发送请求, 使用灵活, 线程切换容易.

RxBinding

节流(防止按钮的重复点击)

轮询,定时操作

RxPermissions

RxBus

RxJava与Retrofit

2.RxJava优点

简洁,异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 Android 创造的AsyncTask 和Handler ,其实都是为了让异步代码更加简洁。RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁


android中为什么使用RxJava_第1张图片
普通开异步线程方式

rxjava方式


android中为什么使用RxJava_第2张图片

RxJava 的这个实现,是一条从上到下的链式调用,没有任何嵌套,这在逻辑的简洁性上是具有优势的。当需求变得复杂时,这种优势将更加明显

3.与 Retrofit 的结合

Retrofit 除了提供了传统的 Callback 形式的 API,还有 RxJava 版本的 Observable 形式 API。下面我用对比的方式来介绍 Retrofit 的 RxJava 版 API 和传统版本的区别。


retrofit方式


android中为什么使用RxJava_第3张图片
retrofit方式


rxjava+retrofit


android中为什么使用RxJava_第4张图片
rxjava+retrofit方式

当 RxJava 形式的时候,Retrofit 把请求封装进 Observable ,在请求结束后调用 onNext() 或在请求失败后调用 onError()。

对比来看, Callback 形式和 Observable 形式长得不太一样,但本质都差不多,而且在细节上 Observable 形式似乎还比 Callback形式要差点。那 Retrofit 为什么还要提供 RxJava 的支持呢?

因为它好用啊!从这个例子看不出来是因为这只是最简单的情况。而一旦情景复杂起来, Callback 形式马上就会开始让人头疼。比如:

假设这么一种情况:你的程序取到的 User 并不应该直接显示,而是需要先与数据库中的数据进行比对和修正后再显示。使用 Callback方式大概可以这么写:


android中为什么使用RxJava_第5张图片
retrofit方式


android中为什么使用RxJava_第6张图片
rxjava方式

代码全都写在一条链中,明显清晰了很多。

假设 /user/getuser 接口并不能直接访问,而需要填入一个在线获取的 token ,代码应该怎么写?

Callback 方式,可以使用嵌套的 Callback:


android中为什么使用RxJava_第7张图片
嵌套


android中为什么使用RxJava_第8张图片

用一个 flatMap() 就搞定了逻辑,依然是一条链。

如果用java8新特性lambda表达式 代码更加简洁


android中为什么使用RxJava_第9张图片

你可能感兴趣的:(android中为什么使用RxJava)