首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安卓7上改装2+ RxJava StackOverflowError

在安卓7上改装2+ RxJava StackOverflowError
EN

Stack Overflow用户
提问于 2017-08-22 15:03:42
回答 1查看 690关注 0票数 2

我在Crashlytics中看到了一些错误,只有Android7与Retrofit 2和RxJava 1相关,根本没有提到任何应用程序代码。设备还没有根深蒂固,应用程序大多不在焦点范围内。在我的任何设备上,到目前为止,这还没有被复制。

Stacktrace如下所示:

代码语言:javascript
复制
Fatal Exception: java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
   at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:114)
   at android.os.Handler.handleCallback(Handler.java:751)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:154)
   at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by java.lang.StackOverflowError: stack size 1037KB
   at rx.exceptions.Exceptions.throwIfAny(Exceptions.java:174)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:144)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.subscriptions.CompositeSubscription.unsubscribeFromAll(CompositeSubscription.java:186)
   at rx.subscriptions.CompositeSubscription.unsubscribe(CompositeSubscription.java:175)
   at rx.internal.util.SubscriptionList.unsubscribeFromAll(SubscriptionList.java:136)
   at rx.internal.util.SubscriptionList.unsubscribe(SubscriptionList.java:125)
   at rx.Subscriber.unsubscribe(Subscriber.java:98)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:820)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.onError(OperatorMerge.java:276)
   at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.onError(OperatorMerge.java:276)
   at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
   at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
   at retrofit2.adapter.rxjava.OperatorMapResponseToBodyOrError$1.onError(OperatorMapResponseToBodyOrError.java:52)
   at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$RequestArbiter.request(RxJavaCallAdapterFactory.java:178)
   at rx.Subscriber.setProducer(Subscriber.java:211)
   at rx.Subscriber.setProducer(Subscriber.java:205)
   at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:152)
   at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:138)
   at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
   at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
   at rx.Observable.unsafeSubscribe(Observable.java:10256)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:248)
   at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:148)
   at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
   at rx.internal.util.ScalarSynchronousObservable$ScalarAsyncProducer.call(ScalarSynchronousObservable.java:200)
   at rx.internal.util.ScalarSynchronousObservable$2$1.call(ScalarSynchronousObservable.java:114)
   at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107)
   at android.os.Handler.handleCallback(Handler.java:751)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:154)
   at android.os.HandlerThread.run(HandlerThread.java:61)

问题不是特定于供应商的(三星、摩托罗拉、华为等)。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-25 18:36:43

根据堆栈跟踪,您似乎拥有非常嵌套的merge操作符。有没有什么地方你可以用一组可观察到的东西做一些事情,比如

代码语言:javascript
复制
Iterator<Observable<T>> it = collection.iterator();
Observable<?> obs = it.next();
while(it.hasNext()) obs=obs.merge(it.next()); 

或者类似的东西(可能是通过.scan())?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45810969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档