Android帝国—四大天王(RxAndroid) 3

这里我们继续上一次的分享,在结束的时,因为有点困,所以草草地结束上一次的分享,有关最后拿出来的实例,没有解释最后代码。 

先说一下,这段代码由来,也就是他干了些什么,进行一次 GET 请求,然后将返回的数据打印在控制台中,这是他任务,我们这里的请求用的 OKHttp 库,这里有关 OKhttp 的使用,随后为大家分享,这里简单地介绍一下如何使用他来创建一次请求。步骤如下,先创建一个客户端  mClient ,然后就开始构建我们的请求,request 包含请求方式,请求地质,请求参数等等,最后用 mclient 发一起 call,call 我们创建好的 request,就完成一次请求。

我们把整个请求包裹在(图)一个可观察的对象(Observable)对象中,具体观察啥呢,观察请求返回的数据,观察请求是否完成,观察是否发生错误。这一切都是在蓝色标记的代码中完成的。

黄色部分的代码是观察者(也可以理解为订阅者),就是在我们接收到这些信息后,是定义如何处理这些数据或信息的。

订阅后会返回对象(绿色线标记 code),他是一个订阅凭证,我们拿着凭证可以随时地取消订阅,以避免在我们不需要数据或信息时,可以及时取消订阅。

这里有一个加餐,就是 emitter.setCancellable 发射器方法让我们可以取消订阅时,取消对网络请求。

好有关如何创建事件源,也就是创建一个 observable 。我们现在有了一些了解了吧,我们标准事件源会发送什么(大礼包),数据,错误信息,是否完成发送(结束)和订阅取消的凭证。但是这里有些是我们不需要的信息,我们可能仅会用到一个或两个的信息。那么为了满足大家的不同的口味。

RxAndroid 为我们提供许多事件源的类型供您选择,这里 y 轴是按他返回哪些信息进行分类,x 轴按是否有背压进行了分类。

知识是相互关联了的,解释这个问题前,我们可能会用到一些相关的知识,那么先对相关知识进行解释一下,以便您更好地理解下面内容。就是 RxAndroid 操作符,那么什么是 RxAndroid 中的操作符,他们干什么用的。事件源发出数据,多数情况我们需要对这些数据进行加工,筛选才能为我们所用。操作符就是帮助我们对数据进行处理和筛选的工具。

我们先看第一个场景,有时候我们只需要第一个数据,这时就可以用 first() 来获取,想一想他会返回第一个数据吗?当然不会了,要不也太low了。返回也是可观察的对象,这个对象携带者第一个数据作为他数据源,但是如果返回的是一个数据 。就需要接受到一个 complete 表示是否完成的信息了吧,我们就一个对象,得到了就完成。所以在 RxAndroid2 会返回一个 Single 来代替 Observable ,看表在 Single 中只有 item 和 error 没有了多余 complete,简洁了一定好处,我们其实应该做的不是添加功能浪费用户精力,应该简化功能。

当我们只关注异步事件不否结束时候,而不管具体发送了什么数据时候我们就可以用 Completable 来代替传统的 Observable ,然后只需要处理 complete 和 error 对象了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章