美文网首页
Android小白之初学RxJava

Android小白之初学RxJava

作者: 梧桐树biu | 来源:发表于2017-07-16 19:05 被阅读0次

    前言


    RxJava中在目前Android开发者开发当中使用非常火热,唯一存在的问题就是不太容易上手,但是一旦搞明白他的原理,用法,你会发现在项目开发当中使用它真是太棒了。那么本文就参考网上资料,针对RxJava的基础进行学习总结。

    基础


    RxJava是什么?

    网上对于RxJava的概念解释有很多,在这里我给出我对它的理解,RxJava是一个异步加载的库,rxjava的优势在于简洁,随着程序逻辑变得越来越复杂,rxJava确一直简洁,能够很大程度的提升代码的阅读性。它无非就是用来发送数据和接收数据。

    RxJava的几个基本概念:

    Observable:数据的发射源,在观察者模式中称为可观察的或者说是被观察者,

    Observer:数据的接受源,在观察者模式中称为观察者;

    Subscriber:订阅者,也是数据的接收源,它与Observer的区别在于,Subscriber实现了Observer接口,多了一个重要的方法unsubscribe()用来取消订阅事件,当你不再想接收数据了,可以调用该方法停止接收数据,Observer在subscribe()过程中,最终也会转化成Subscriber对象,因此,一般情况下,都建议使用Subscriber作为数据的接收源;

    Subscription:Observable在调用subscribe()的时候返回的对象,同样有unsubscribe()方法,也可以用来取消订阅事件;

    核心思想:1)RxJava最核心的两个东西是Observable(被观察者)和Subscribers(观察者),由Observable发出事件,通过Subscribers来处理事件。2)Observable和observer通过subscribe()来实现订阅关系,从而使Observable可以在需要的时候发出事件来通知Observer。3)一个Observable可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext()方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束,但是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。

    基本用法:

    1. 首先需要添加依赖:

    在build.gradle文件中的dependencies节点下添加内容:

    compile 'io.reactivex:rxjava:1.1.6'

    2. 创建可观察者/被观察者对象Observable:

         使用create()最基础的方式创建被观察者对象,通过调用onNext()方法发送一个String字符串,执行onCompleted()方法表明数据发送完成,这种方法只有手动调用onCompleted()方法,才会回调Observer的onCompleted()方法。

    3. 创建一个观察者Subscribers,来处理Observable对象发出的字符串。

    onNext()是成功的回调,onError()是失败的回调,onCompleted()是方法完成时的回调。

    4. 通过Subscriber()方法,将我们定义的mSubscriber对象和mObserveable对象关联起来,这样就完成了观察者和被观察者之间的订阅关系。

    一旦mSubscriber订阅了mObserveable,mObserveable就会去调用mSubscriber的onNext()方法和onCompleted()方法,mSubscriber就会打印出来字符串hello world!.

    简洁代码(基于基本用法):

    1. 简化Observable的创建过程,可以通过Observable.just()或者Observable.from()来创建只发出一个事件就结束的Observable对象;

    2. 简化Subscriber的创建过程,通过对基础用法的观察,发现对于onComplete()和onError()方法没有过多的关注,这个时候我们就可以使用Action1接口。

     subscribe方法有一个重载版本,接受三个Action1类型的参数,分别对应OnNext,OnComplete, OnError函数。在这里我们不太关心onComplete()和onError()方法,因此只需要传一个参数即可onNext。

    因此上述代码最终就可以简化成:

    拓展:介绍一下Action1这个类; 

    1) Action X 接口:

    可以通过Action X接口来简化Subscriber的创建过程,它的接口有很多,Action0 和 Action1 最常用,还有Action2, Action3,X代表传入的参数的数目。他们其实是对具有不同传入参数、但是无返回值的方法的包装接口。另外subscribe()会根据这些ActionX对象生成正常的Subscriber。

    2)Action 0接口:

    rxjava的一个接口,只有一个call()方法,没有参数,没有返回值。由于 onCompleted() 方法也是无参无返回值的,因此 Action0 可以被当成一个包装对象,将 onCompleted() 的内容打包起来将自己作为一个参数传入 subscribe() 以实现不完整定义的回调,这样其实也可以看做将onCompleted()方法作为参数传进了subscribe()方法中。

    3)Action 1接口:

    它也是RxJava的一个接口,同样只有一个call(T param)方法,他有一个参数,没有返回值。与 Action0 同理,由于 onNext(T obj) 和 onError(Throwable error) 也是单参数无返回值的,因此 Action1可以将 onNext(obj) 和 onError(error) 打包起来传入 subscribe() 以实现不完整定义的回调。

    实例练习(给imageView设置图片):

    总结

    总的来说,Observable和Subscriber可以做任何事情,Observable可以是一个数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;Observable可以是一个网络请求,Subscriber用来显示请求结果。

    相关文章

      网友评论

          本文标题:Android小白之初学RxJava

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