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()
接口后,会走Subscriber
的public void onSubscribe(Disposable disposable)
方法,在这里,我们可以取消发射数据 ,如果数据没有被取消发射,会调用Subscriber
的public void onNext(T item)
方法,在这里处理完数据后。 直到数据处理完,最后调用public void onComplete()
。
这个过程是被观察者主动发送数据给观察者,它不管观察者能否处理得了这些数据。