订阅者java_RxJava:“java.lang.IllegalStateException:只允许一个订阅者!”
我正在使用RxJava来计算Android中某些传感器数据的标准化自动关联 . 奇怪的是,我的代码抛出一个异常(“java.lang.IllegalStateException:只允许一个订阅者!”)并且我不确定该怎么做:我知道GroupedObservables在订阅我的多个订阅者时可能抛出此异常,但是我不认为我在任何地方使用这样的东西 .
您可以在下面找到(最有可能)触发异常的方法:
public Observable normalizedAutoCorrelation(Observable observable, final int lag) {
Observable laggedObservable = observable.skip(lag);
Observable meanObservable = mean(observable, lag);
Observable laggedMeanObservable = mean(laggedObservable, lag);
Observable standardDeviationObservable = standardDeviation(observable, meanObservable, lag);
Observable laggedStandardDeviationObservable = standardDeviation(laggedObservable, laggedMeanObservable, lag);
Observable deviation = observable.zipWith(meanObservable, new Func2() {
@Override
public Float call(Float value, Float mean) {
return value - mean;
}
});
Observable laggedDeviation = observable.zipWith(laggedMeanObservable, new Func2() {
@Override
public Float call(Float value, Float mean) {
return value - mean;
}
});
Observable autoCorrelationPartObservable = deviation.zipWith(laggedDeviation, new Func2() {
@Override
public Float call(Float value, Float laggedValue) {
return value * laggedValue;
}
});
Observable autoCorrelationObservable = flatten(autoCorrelationPartObservable.window(lag, 1).scan(new Func2, Observable, Observable>() {
@Override
public Observable call(Observable memoObservable, Observable observable) {
if(memoObservable == null) return observable;
return memoObservable.zipWith(observable, new Func2() {
@Override
public Float call(Float memo, Float value) {
return memo + value;
}
});
}
}));
Observable normalizationObservable = standardDeviationObservable.zipWith(laggedStandardDeviationObservable, new Func2() {
@Override
public Float call(Float standardDeviation, Float laggedStandardDeviation) {
return lag * standardDeviation * laggedStandardDeviation;
}
});
return autoCorrelationObservable.zipWith(normalizationObservable, new Func2() {
@Override
public Float call(Float autoCorrelation, Float normalization) {
return autoCorrelation / normalization;
}
});
}
这是我得到的堆栈跟踪:
java.lang.IllegalStateException: Only one subscriber allowed!
at rx.internal.operators.BufferUntilSubscriber$OnSubscribeAction.call(BufferUntilSubscriber.java:124)
at rx.internal.operators.BufferUntilSubscriber$OnSubscribeAction.call(BufferUntilSubscriber.java:81)
at rx.Observable.unsafeSubscribe(Observable.java:7304)
at rx.internal.operators.OperatorZip$Zip.start(OperatorZip.java:210)
at rx.internal.operators.OperatorZip$ZipSubscriber.onNext(OperatorZip.java:154)
at rx.internal.operators.OperatorZip$ZipSubscriber.onNext(OperatorZip.java:120)
at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:41)
at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:30)
at rx.Observable$1.call(Observable.java:145)
at rx.Observable$1.call(Observable.java:137)
at rx.Observable.unsafeSubscribe(Observable.java:7304)
at rx.internal.operators.OperatorMerge$MergeSubscriber.handleNewSource(OperatorMerge.java:188)
at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:158)
at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:93)
at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55)
at rx.internal.operators.OperatorScan$2.onNext(OperatorScan.java:110)
at rx.internal.operators.OperatorWindowWithSize$InexactSubscriber.onNext(OperatorWindowWithSize.java:173)
at rx.internal.operators.OperatorZip$Zip.tick(OperatorZip.java:255)
at rx.internal.operators.OperatorZip$Zip$InnerSubscriber.onNext(OperatorZip.java:326)
at rx.internal.operators.OperatorZip$Zip.tick(OperatorZip.java:255)
at rx.internal.operators.OperatorZip$Zip$InnerSubscriber.onNext(OperatorZip.java:326)
at rx.internal.operators.OperatorMerge$InnerSubscriber.emit(OperatorMerge.java:635)
at rx.internal.operators.OperatorMerge$InnerSubscriber.onNext(OperatorMerge.java:545)
at rx.internal.operators.NotificationLite.accept(NotificationLite.java:150)
at rx.internal.operators.TakeLastQueueProducer.emit(TakeLastQueueProducer.java:98)
at rx.internal.operators.TakeLastQueueProducer.startEmitting(TakeLastQueueProducer.java:45)
at rx.internal.operators.OperatorTakeLast$1.onCompleted(OperatorTakeLast.java:59)
at rx.internal.operators.OperatorScan$2.onCompleted(OperatorScan.java:121)
at rx.internal.operators.BufferUntilSubscriber.onCompleted(BufferUntilSubscriber.java:161)
at rx.internal.operators.OperatorWindowWithSize$InexactSubscriber.onNext(OperatorWindowWithSize.java:183)
at rx.internal.operators.OperatorSkip$1.onNext(OperatorSkip.java:58)
at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55)
at rx.subjects.SubjectSubscriptionManager$SubjectObserver.onNext(SubjectSubscriptionManager.java:224)
at rx.subjects.PublishSubject.onNext(PublishSubject.java:121)
at com.github.joopaue.smartphonesensing.SensorService$3.onSensorChanged(SensorService.java:102)
at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:418)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:138)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
我不认为我在这里做任何奇怪的事情:一些拉链,缩小,扫描和平面图 .
我错过了一些完全明显的东西,是否有一些我在这里打破的隐藏规则或者它是RxJava中的错误?谢谢!
PS . 如果您缺乏一些代码可以得出结论,那就问问我会发布!
订阅者java_RxJava:“java.lang.IllegalStateException:只允许一个订阅者!”相关推荐
- 订阅者java,RxJava:“ java.lang.IllegalStateException:只允许一个订阅者!”
我正在使用RxJava计算Android中某些传感器数据的标准化自动相关性.奇怪的是,我的代码引发了一个异常(" java.lang.IllegalStateException:只允许一个订 ...
- 批量下载的实现及java.lang.IllegalStateException异常
在工作流的一张表单里可能会有多个步骤上传附件,在用户的待办中往往会存在多条带有附件的任务,如果一一打开并且点击下载链接下载,不仅费时,而且繁琐,用户体验较差. OA系统采用的是FastDFS做为文件服 ...
- 解决java.lang.IllegalStateException: getOutputStream() has already been called for this response
简单的说:用了流之后关掉即可. 下面详细说明: 出现了java.lang.IllegalStateException: getOutputStream() has already been calle ...
- nested exception is java.lang.IllegalStateException: Context namespace element 'annotation-config' a
公司还用的是spring低版本,今天用jre 8测试了一下,发现错误: Unexpected exception parsing XML document from class path resour ...
- java.lang.IllegalStateException: Context namespace element ‘annotation-config’ and its parser class
项目中用的是spring低版本(2.5.6),今天用jre 8测试了一下,发现错误: Unexpected exception parsing XML document from class path ...
- 解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错
解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错 问题描述: 笔者将一个在 Tomcat ...
- 解决Hbase报错java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for....
完整报错为: java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper ...
- ## java.lang.IllegalStateException:错误 修改
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo ...
- java.lang.IllegalStateException: Ambiguous handler methods
文章目录 错误 存在问题的代码 解决 错误 java.lang.IllegalStateException: Ambiguous handler methods mapped for '/favori ...
最新文章
- python保存到固定文件夹的存储路径不能直接复制!
- ONVIF C++ 库
- gitignore完整使用方法
- Keras【Deep Learning With Python】逻辑回归·softmax多分类与交叉熵
- 腾讯内部人士爆与老干妈合作多个环节有漏洞 却没人察觉
- java 抽象工厂 类图_spring学习中常用到的工厂,抽象工厂学习 | 学步园
- Python学习笔记--组合数据类型
- 计算机毕业设计制作模仿网站的期末作业通过神器——各种扒站方法(网站,软件)
- codeforces1469 E. A Bit Similar
- 带你熟悉鸿蒙轻内核Kconfig使用指南
- 利用python提取abaqus节点坐标的脚本_用于在Abaqus中提取结点力的Python程序
- android:id=@android:id/list,Logcat错误 - 内容必须有一个ListView的id属性是'android.R.id.list'...
- 全球最大同性交友网站 GitHub 10 岁了!
- 机械动力学瑞利法matlab程序,工业机器人的动力学建模与仿真+MATLAB程序
- 卡巴斯基7.0离线更新升级包病毒库
- Linux-两台Linux服务器间设置共享文件夹(NFS服务器)
- spring动态代理之cglib动态代理
- Eigen的LLT分解
- 使用ToUpperInvariant避免使用ToUpper
- csp字符画c语言,CCF-CSP:201909-3字符画