我有一个Android服务,当PublishSubject通过EventBus接收下载事件时下载文件,我想根据设置限制并发下载的数量。
实例化服务后,它会创建PublishSubject和以下订阅:
PublishSubject<DownloadEvent> downloadsSubject = PublishSubject.create();
Subscription downloadSubscription = downloadsSubject
.subscribeOn(Schedulers.io())
.filter(event -> !isDownloaded(event))
.flatMap(this::addDownloadToQueue)
.flatMap(this::startDownload, preferences.getDownloadThreadsNumber())
.onBackpressureBuffer()
.subscribe();
但是只有在订阅时才会获得设置,并且对设置的更改无效。
有没有办法为下一个队列排放更新此值(或其他方法)而无需再次订阅?
答案 0 :(得分:1)
Here is一个带有自定义运算符的runnable类,它应该可以执行您想要的操作。
在这种情况下有几种竞争条件,我试图覆盖其中的大部分。操作员不协调背压,因此您可能需要onBackpressureBuffer
。