Я недавно обновил свое приложение до RxJava2 и RxLifecycle3 - я также использую Retrofit2.Сейчас я вижу множество исключений UndeliverableExceptions, когда запросы моего сервера через Retrofit и RxJava не выполняются.К сожалению, трассировки стека не показывают, где в коде происходит ошибка - только то, что это, вероятно, поток, использующий Single.zip()
.
Я искал конструкторы emitters / create, вызывающие onError()
, но нашел только tryOnError()
звонки в моем приложении.
Может быть, причина в RxLifecycle .compose(bindToLifecycle())
?В любом месте, где я использую этот вызов, я помещал его прямо над вызовом subscribe()
.Я знаю, что этот подход испускает onError()
, чтобы отменить поток.В этом случае, правильно ли расположен Single Upstream?Есть ли проблема с удалением операции Single.zip()
, находящейся в flatmap()
?
Есть ли у вас какие-либо идеи, какие другие шаблоны искать UndeliverableException
s?
Fatal Exception: io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | <Cause Exception Message>
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.operators.single.SingleZipArray$ZipCoordinator.innerError(SingleZipArray.java:139)
at io.reactivex.internal.operators.single.SingleZipArray$ZipSingleObserver.onError(SingleZipArray.java:175)
at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:79)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:119)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)