Rxjava基本使用

RxJava 是一个 基于事件流、实现异步操作的库

本文是基于Rxjava2.0, 2.0和1.0差异可以参考:
//www.greatytc.com/p/5588a6e2cbb0

添加依赖

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

具体实现

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

            @Override
            public void subscribe(ObservableEmitter<Object> emitter) throws Exception {
                emitter.onNext(null);
                emitter.onComplete();
              //  emitter.onError(null);

            }
        }).subscribe(new Observer<Object>() {
            // 1. 定义Disposable类变量
            private Disposable mDisposable;
            @Override
            public void onSubscribe(Disposable d) {
                // 默认最先调用复写的 onSubscribe()
                mDisposable = d;
            }

            @Override
            public void onNext(Object o) {
                mDisposable.dispose(); //切断观察者和被观察者的连接
                Log.d(TAG, "对Next事件"+ value +"作出响应"  );
            }

            @Override
            public void onError(Throwable e) {
                Log.d(TAG, "对Error事件作出响应");
            }

            @Override
            public void onComplete() {
                Log.d(TAG, "对Complete事件作出响应");
            }
        });

image.png

代码中有四个回调方法,但是我们不一定会用到所有的回调方法,那么怎么才能让代码更加简洁呢?

 public final Disposable subscribe() {}
    // 表示观察者不对被观察者发送的事件作出任何响应(但被观察者还是可以继续发送事件)

    public final Disposable subscribe(Consumer<? super T> onNext) {}
    // 表示观察者只对被观察者发送的Next事件作出响应
    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {} 
    // 表示观察者只对被观察者发送的Next事件 & Error事件作出响应

    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete) {}
    // 表示观察者只对被观察者发送的Next事件、Error事件 & Complete事件作出响应

    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe) {}
    // 表示观察者只对被观察者发送的Next事件、Error事件 、Complete事件 & onSubscribe事件作出响应

    public final void subscribe(Observer<? super T> observer) {}
    // 表示观察者对被观察者发送的任何事件都作出响应

被观察者 Observable的subscribe()具备多个重载的方法

Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter emitter) throws Exception {
                emitter.onNext("null");

            }
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String o) throws Exception {
                LogUtils.e("TAG", o); //当被观察者发射onNext时,accept将被执行
            }
        });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容