Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RXJava-背压缓冲器+;多个观察者不工作_Android_Rx Java_Rx Android - Fatal编程技术网

Android RXJava-背压缓冲器+;多个观察者不工作

Android RXJava-背压缓冲器+;多个观察者不工作,android,rx-java,rx-android,Android,Rx Java,Rx Android,我有一个可观察的,并订阅了它。我不需要错过任何发出的结果,因此我使用onBackpressureBuffer如下所示: Observable<Data> observable = observable.onBackpressureBuffer(); if (BuildConfig.DEBUG) { observable .subscribeOn(HandlerScheduler.from(dataManager.getBackgroundHandler())

我有一个
可观察的
,并订阅了它。我不需要错过任何发出的结果,因此我使用
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) {

            }
        });
Observable-Observable=Observable.onBackpressureBuffer();
if(BuildConfig.DEBUG)
{
可观察
.subscribeOn(HandlerScheduler.from(dataManager.getBackgroundHandler()))
.observeOn(HandlerScheduler.from(dataManager.getBackgroundHandler()))
.认购(新计量认购人(…);
}
//这是我在应用程序中需要的真实观察者
可观察
.subscribeOn(HandlerScheduler.from(dataManager.getBackgroundHandler()))
.observeOn(AndroidSchedulers.mainThread())
.订阅(新观察员)
{
@凌驾
未完成的公共无效(){
}
@凌驾
公共无效申报人(可丢弃的e){
}
@凌驾
公共void onNext(数据){
}
});
MeasuringSubscriber
是一个定制订户,它只记录任务需要多长时间,仅此而已

问题

如果我添加
MeasuringSubscriber
,订阅者将不再工作,也不会发出结果。为什么?我怎样才能让它起作用呢

编辑-新问题

目前它正在工作,但MeasurengSubscriber不知何故被阻塞了,这意味着,首先所有项目都会一个接一个地发送到
MeasurengSubscriber
,然后所有项目才会一个接一个地发送到主订户。。。你知道是什么原因吗

我有一个解决方案-我可以从
测量可观测的
扩展我的主要观测值-但我更想知道为什么会发生这种情况以及如何避免这种情况


我试着使用
publish
+
connect
,但它仍然会将所有项目发送到第一个订户,然后再发送到第二个订户…

您在调试配置中订阅的“res”是什么?忘了替换它,它是
可观察的
。。。已经纠正了…如果你的可观测数据是一个实际的流,它可能已经被订阅了,你不能订阅两次。考虑使用<代码>可观察到的(共享)/代码>或类似于Android的RX中可用的类似内容。它不是流,也不是任何人以前订阅它的,它只是一个简单的功能可观察的,它可以遍历列表并计算一些东西。目前它正在工作,但是
MeasuringSubscriber
在某种程度上是阻塞的,这意味着,首先所有项目都会一个接一个地发送到
MeasuringSubscriber
,然后所有项目才会一个接一个地发送到主订户。。。知道是什么原因吗?PS:我试过使用
publish
+
connect
,但它确实会将所有项目发送到第一个订阅者,然后再发送到第二个订阅者。。。