Observable

Observable是被观察者,Observer是观察者。

RxJava v2中,Observable的操作都是不支持Backpressure的,只是与Rxjava v1相比, 不会再出现x.exceptions.MissingBackpressureException异常了。

下面是类结构图:

示例:

Observable
    .range(1, 20)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(new Observer() {
        @Override
        public void onSubscribe(@NonNull Disposable d) {
            Log.d(TAG, "onSubscribe()");
        }

        @Override
        public void onNext(@NonNull Integer item) {
            Log.d(TAG, "onNext() " + item);
        }

        @Override
        public void onError(@NonNull Throwable e) {
            Log.e(TAG, "onError() ", e);
        }

        @Override
        public void onComplete() {
            Log.d(TAG, "onComplete()");
        }
    });

当调用了subscribe()接口后,会走Subscriberpublic void onSubscribe(Disposable disposable)方法,在这里,我们可以取消发射数据 ,如果数据没有被取消发射,会调用Subscriberpublic void onNext(T item)方法,在这里处理完数据后。 直到数据处理完,最后调用public void onComplete()

这个过程是被观察者主动发送数据给观察者,它不管观察者能否处理得了这些数据。