我有一个Observable
并订阅它。我不需要错过任何发出的结果,所以我使用onBackpressureBuffer
如下:
Observable<Data> observable = observable.onBackpressureBuffer();
if (BuildConfig.DEBUG)
{
observable
.subscribeOn(HandlerScheduler.from(dataManager.getBackgroundHandler()))
.observeOn(HandlerScheduler.from(dataManager.getBackgroundHandler()))
.subscribe(new MeasuringSubscriber(...));
}
// Here is the real observer that I need in my app
observable
.subscribeOn(HandlerScheduler.from(dataManager.getBackgroundHandler()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Data>()
{
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Data data) {
}
});
MeasuringSubscriber
是一个自定义订阅者,只记录任务需要多长时间,就是这样。
问题
如果我添加MeasuringSubscriber
,订阅者将不再工作,并且永远不会发出结果。为什么?我怎样才能使它工作?
编辑 - 新问题
目前它正在运行,但MeasuringSubscriber以某种方式阻塞,这意味着,首先所有项目一个接一个地发送到MeasuringSubscriber
,然后只有所有项目一个接一个地发送给主用户......任何想法什么可能导致这种情况?
我有一个解决方案 - 我可以从MeasuringObservable
延伸我的主观察者 - 但我想知道为什么会发生这种情况以及如何避免这种情况......
我尝试使用publish
+ connect
,但它确实会将所有项目发送给第一个订阅者,然后再将其发送到第二个订阅者...