Android 开发技术分享Android精选

RxJava2

2017-10-26  本文已影响59人  asla

前言

       最近公司的项目中有用到RxJava2框架,用到Lambda表达式,感觉一段小小的代码,功能缺如此强大,于是打算好好研究RxJava2这个框架。

        网上很多关于RxJava2的介绍及使用情况,本文主要参考:https://gank.io/post/560e15be2dca930e00da1083 这篇文章,写的很详细,容易理解。还有带心情去旅行【Android】RxJava的使用(一)到(四)

        RxJava2在Github上的地址为:

                  https://github.com/ReactiveX/RxJava      //用于Java

                  https://github.com/ReactiveX/RxAndroid        //添加Android用的gradle

        所以要使用时,需要在Module的build.gradle中添加依赖:

compile'io.reactivex.rxjava2:rxandroid:2.0.1'

compile'io.reactivex.rxjava2:rxjava:2.1.2'

RxJava2是什么?

      本质上,RxJava2是一个实现异步操作的库。用它的目的是使得代码更简洁,因为在Android中,关于异步操作,可以用到AsyncTask和Handler,但是随着程序逻辑复杂程度的加深,代码的可读性就比较差,RxJava2依然能够保持代码的简洁。

       RxJava2的异步操作主要通过观察者模式来实现的,观察者模式:即有观察者,被观察者,二者之间是一种订阅关系,当被观察者的某种状态改变时,观察者要根据被观察者状态的改变做出相应的反应。

       RxJava2的实现,举个例子:

          1.创建一个观察者Observer

         2,创建一个被观察者

3,二者之间实现订阅关系

输出的结果为:

分析:

          observable和observer之间通过observable.subscribe(observer)实现了一种订阅关系,刚开始调用的是observer的onSubscribe方法,事件触发后,通过e.onNext()方法回调,回调的具体内容是在Observer的onNext()方法中,两次回调onNext()方法后,回调onComplete()来表示事件结束。onComplete()和onError()之间是相对的关系,调用了onComplete()就不会调用onError(),反之亦然。

Observable的创建方式有3种:

     以第一种方式创建Observable,Observer不变,代码如下:

   输出的结果为:

   分析:

          observable先通过调用accept()方法,把通过fromArray传入的参数一个个accept,然后通过observer和observable之间的订阅关系,一步步回调。与create相比,节省了通过e.onNext(" ")的方式传入参数的代码。


上一篇下一篇

猜你喜欢

热点阅读