我正在使用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:只允许一个订阅者!”相关推荐

  1. 订阅者java,RxJava:“ java.lang.IllegalStateException:只允许一个订阅者!”

    我正在使用RxJava计算Android中某些传感器数据的标准化自动相关性.奇怪的是,我的代码引发了一个异常(" java.lang.IllegalStateException:只允许一个订 ...

  2. 批量下载的实现及java.lang.IllegalStateException异常

    在工作流的一张表单里可能会有多个步骤上传附件,在用户的待办中往往会存在多条带有附件的任务,如果一一打开并且点击下载链接下载,不仅费时,而且繁琐,用户体验较差. OA系统采用的是FastDFS做为文件服 ...

  3. 解决java.lang.IllegalStateException: getOutputStream() has already been called for this response

    简单的说:用了流之后关掉即可. 下面详细说明: 出现了java.lang.IllegalStateException: getOutputStream() has already been calle ...

  4. nested exception is java.lang.IllegalStateException: Context namespace element 'annotation-config' a

    公司还用的是spring低版本,今天用jre 8测试了一下,发现错误: Unexpected exception parsing XML document from class path resour ...

  5. 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 ...

  6. 解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错

    解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错 问题描述:   笔者将一个在 Tomcat ...

  7. 解决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 ...

  8. ## java.lang.IllegalStateException:错误 修改

    java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo ...

  9. java.lang.IllegalStateException: Ambiguous handler methods

    文章目录 错误 存在问题的代码 解决 错误 java.lang.IllegalStateException: Ambiguous handler methods mapped for '/favori ...

最新文章

  1. python保存到固定文件夹的存储路径不能直接复制!
  2. ONVIF C++ 库
  3. gitignore完整使用方法
  4. Keras【Deep Learning With Python】逻辑回归·softmax多分类与交叉熵
  5. 腾讯内部人士爆与老干妈合作多个环节有漏洞 却没人察觉
  6. java 抽象工厂 类图_spring学习中常用到的工厂,抽象工厂学习 | 学步园
  7. Python学习笔记--组合数据类型
  8. 计算机毕业设计制作模仿网站的期末作业通过神器——各种扒站方法(网站,软件)
  9. codeforces1469 E. A Bit Similar
  10. 带你熟悉鸿蒙轻内核Kconfig使用指南
  11. 利用python提取abaqus节点坐标的脚本_用于在Abaqus中提取结点力的Python程序
  12. android:id=@android:id/list,Logcat错误 - 内容必须有一个ListView的id属性是'android.R.id.list'...
  13. 全球最大同性交友网站 GitHub 10 岁了!
  14. 机械动力学瑞利法matlab程序,工业机器人的动力学建模与仿真+MATLAB程序
  15. 卡巴斯基7.0离线更新升级包病毒库
  16. Linux-两台Linux服务器间设置共享文件夹(NFS服务器)
  17. spring动态代理之cglib动态代理
  18. Eigen的LLT分解
  19. 使用ToUpperInvariant避免使用ToUpper
  20. csp字符画c语言,CCF-CSP:201909-3字符画

热门文章

  1. 搞懂 Javascript 继承原理
  2. Lync Server 2013 标准版部署(二)DNS记录权限
  3. 综合应用WPF/WCF/WF/LINQ之三:采用用代码创建的方式实现CheckListBox的CustomControl
  4. 一个典型的后台软件系统的设计复盘——(二)如何id一个事物
  5. 内存对齐的规则以及作用
  6. angularJs的学习笔记
  7. redmine 2.2.x 修改文档附件的存放目录
  8. SJCL:斯坦福大学JS加密库
  9. 微服务限流Sentinel讲解(二)
  10. 3.7.1 读取输入