美文网首页
RxJava的使用

RxJava的使用

作者: MalDev | 来源:发表于2016-12-08 13:57 被阅读0次

    RxJava

    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1012/3572.html

    • 优势

    RxJava 的实现,是一条从上到下的链式调用,没有任何嵌套,这在逻辑的简洁性上是具有优势的

    • 概念及用法

    观察者模式
    观察者(observer)----------被观察者(observable)
    通过订阅,observer知道当observable发生变化时新的状态,对应的就是Android的按钮点击事件:当Button被onClick时,onClickListener监听到该事件并产生相应动作。

    • RxJava的特殊性

    与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() / onEvent())之外,还定义了两个特殊的事件:onCompleted() 和 onError()。

    onCompleted(): 事件队列完结。RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的onNext() 发出时,需要触发 onCompleted() 方法作为标志。

    onError(): 事件队列异常。在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出
    在一个正确运行的事件序列中, onCompleted() 和 onError() 有且只有一个,并且是事件序列中的最后一个。

    • RxJava的实现步骤

    1.创建observer
    (观察者) 它决定事件触发的时候将有怎样的行为

    Observer<String> observer = new Observer<String>(){
        实现上述所写的三个方法
    }
    

    除了 Observer 接口之外,RxJava 还内置了一个实现了 Observer 的抽象类:Subscriber。 Subscriber 对 Observer 接口进行了一些扩展.
    在 RxJava 的 subscribe 过程中,Observer 也总是会先被转换成一个 Subscriber 再使用。所以如果你只想使用基本功能,选择 Observer 和 Subscriber 是完全一样的。它们的区别对于使用者来说主要有两点:

    1.onStart(): 这是 Subscriber 增加的方法。它会在 subscribe 刚开始,而事件还未发送之前
    被调用,可以用于做一些准备工作,例如数据的清零或重置。这是一个可选方法,默认情况下它的实
    现为空。需要注意的是,如果对准备工作的线程有要求(例如弹出一个显示进度的对话框,这必须在
    主线程执行), onStart() 就不适用了,因为它总是在 subscribe 所发生的线程被调用,而不能
    指定线程。要在指定的线程来做准备工作,可以使用 doOnSubscribe() 方法,具体见后文。
    2.unsubscribe(): 这是 Subscriber 所实现的另一个接口 Subscription 的方法,用于取消订阅。
    在这个方法被调用后,Subscriber 将不再接收事件.一般在这个方法调用前,可使用 isUnsubscribed() 
    先判断一下状态。 unsubscribe() 这个方法很重要,因为在 subscribe() 之后, Observable 
    会持有 Subscriber 的引用,这个引用如果不能及时被释放,将有内存泄露的风险。所以最好保持一
    个原则:要在不再使用的时候尽快在合适的地方(例如 onPause() onStop() 等方法中)调用
    unsubscribe() 来解除引用关系,以避免内存泄露的发生。
    

    2.

    3.

    相关文章

      网友评论

          本文标题:RxJava的使用

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