RXJava - onBackpressureBuffer +多个观察者无法正常工作

时间:2016-01-16 19:11:20

标签: android rx-java rx-android

我有一个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,但它确实会将所有项目发送给第一个订阅者,然后再将其发送到第二个订阅者...

0 个答案:

没有答案