Flowable

Flowable是被观察者,Subscriber是观察者。

RxJava v2中,Flowable的操作都是支持Backpressure的。

下面是类结构图:

示例:

Flowable.range(1, 20)
    .subscribe(new Subscriber() {

        private Subscription subscription;

        @Override
        public void onSubscribe(Subscription subscription) {
            Log.d(TAG, "onSubscribe()");
            this.subscription = subscription;
            subscription.request(1);
        }

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

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

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

当调用了subscribe()接口后,会走Subscriberpublic void onSubscribe(Subscription subscription)方法,在这里,我们的观察者要主动调用subscription.request(1);向被观察者要数据,要到数据后,会调用Subscriberpublic void onNext(T item)方法,在这里处理完数据后,再主动调用subscription.request(1);向被观察者要数据。直到数据处理完,最后调用public void onComplete()

这个过程是观察者问被观察者要数据,而不是被观察者主动发送数据给观察者。