RxJava2

作者: asla | 来源:发表于2017-10-26 20:08 被阅读59次

    前言

           最近公司的项目中有用到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(" ")的方式传入参数的代码。


    相关文章

      网友评论

        本文标题:RxJava2

        本文链接:https://www.haomeiwen.com/subject/dxkldxtx.html