继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

RxJava2 学习(一)

汪汪一只猫
关注TA
已关注
手记 568
粉丝 129
获赞 718

前言

年底了换工作,在很多公司的面试中都有提到对RxJava运用,在以前我就只是简单的使用Retrofit +RxJava+OkHttp的运用,自己也没有深入的理解其中的,现在自己相对于再一次学习,并进行记录;

RxJava 的观察者模式

RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。

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

onCompleted(): 事件队列完结。RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的 onNext() 发出时,需要触发 onCompleted() 方法作为标志。
onError(): 事件队列异常。在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出。
在一个正确运行的事件序列中, onCompleted() 和 onError() 有且只有一个,并且是事件序列中的最后一个。需要注意的是,onCompleted() 和 onError() 二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。

基本实现

Observer 即观察者,它决定事件触发的时候将有怎样的行为。

Observable.create(new ObservableOnSubscribe<Integer>() {

        @Override
        public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
            Log.e(TAG, "emit 1");
            emitter.onNext(1);
            Log.e(TAG, "emit 2");
            emitter.onNext(2);
            Log.e(TAG, "emit 3");
            emitter.onNext(3);
            Log.e(TAG, "emit complete");
            emitter.onComplete();
            Log.e(TAG, "emit 4");
            emitter.onNext(4);
        }
    }).subscribe(new Observer<Integer>() {        private Disposable mDisposable;        private int i;        @Override
        public void onSubscribe(Disposable d) {
            Log.e(TAG, "subscribe");
            mDisposable = d;
        }        @Override
        public void onNext(Integer value) {
            Log.e(TAG, "onNext: " + value);
            i++;            if (i == 2) {
                Log.e(TAG, "dispose");
                mDisposable.dispose();
                Log.e(TAG, "isDisposed : " + mDisposable.isDisposed());
            }
        }        @Override
        public void onError(Throwable e) {
            Log.e(TAG, "error");
        }        @Override
        public void onComplete() {
            Log.e(TAG, "complete");
        }
    });

名称 解析
just() 将一个或多个对象转换成发射这个或这些对象的一个Observable
fromArray() 将一个Iterable, 一个Future, 或者一个数组转换成一个Observable
repeat() 创建一个重复发射指定数据或数据序列的Observable
repeatWhen() 创建一个重复发射指定数据或数据序列的Observable,它依赖于另一个Observable发射的数据
create() 使用一个函数从头创建一个Observable
defer() 只有当订阅者订阅才创建Observable;为每个订阅创建一个新的Observable
range() 创建一个发射指定范围的整数序列的Observable
interval() 创建一个按照给定的时间间隔发射整数序列的Observable
timer() 创建一个在给定的延时之后发射单个数据的Observable
empty() 创建一个什么都不做直接通知完成的Observable
error() 创建一个什么都不做直接通知错误的Observable
never() 创建一个不发射任何数据的Observable

原文链接:http://www.apkbus.com/blog-87624-76678.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP