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是一个下游接收类。
异步流处理:理解背压模式与Flowable在事件限流中的应用
本文探讨了如何在Android中利用Flowable实现背压模式,解决上游大量事件涌来时下游处理能力不足的问题。通过创建Flowable实例,设置缓冲池大小并配置订阅策略,作者详细介绍了异步线程调度和下游请求控制。关键概念包括背压策略、数据缓冲池和Subscriber/Subscription的交互。
1594

被折叠的 条评论
为什么被折叠?



