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()
接口后,会走Subscriber
的public void onSubscribe(Subscription subscription)
方法,在这里,我们的观察者要主动调用subscription.request(1);
向被观察者要数据,要到数据后,会调用Subscriber
的public void onNext(T item)
方法,在这里处理完数据后,再主动调用subscription.request(1);
向被观察者要数据。直到数据处理完,最后调用public void onComplete()
。
这个过程是观察者问被观察者要数据,而不是被观察者主动发送数据给观察者。