1.项目地址
在MainActivity10
2.讲解:
背压模式主要是为了解决上游发送大量的事件,下游处理不过来的情况,使用Flowable来操作。相比较Observable多了背压策略。
背压涉及到数据缓冲池,缓冲池大小为128。
//背压模式建立在异步线程中。上游(异步线程)会一直执行,然后下游的Subscription累执行request的时候才会接收
Flowable.create(new FlowableOnSubscribe<Integer>() {
@Override
public void subscribe(@NonNull FlowableEmitter<Integer> emitter) throws Throwable {
for (int i = 0; i < 500; i++) {
emitter.onNext(i);
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG, "subscribe: "+i);
}
emitter.onComplete();
}
}, BackpressureStrategy.BUFFER)//
.subscribeOn(Schedulers.io())//給上游分配异步线程
.observeOn(AndroidSchedulers.mainThread())//给下游分配主线程
.subscribe(
//完整版本的下游,被观察者
new Subscriber<Integer>() {
@Override
public void onSubscribe(Subscription s) {
subscription = s;//变为全局变量,这样有利于外面操作
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "onNext: "+integer);
}
@Override
public void onError(Throwable t) {
Log.d(TAG, "onError: "+t.getMessage());
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete: ");
}
});
执行接收操作:下面执行后,就会一次接收10个
subscription.request(10);
Flowable类是专门为下压设置的。还有专门的类Subscriber。
Subscription是一个下游接收类。