Android Room RxJava无法交付异常
我正在尝试修复crashlytics在我发布给play store的应用程序中报告的一些错误 我检查了日志,但我不知道如何修复它Android Room RxJava无法交付异常,android,rx-java,android-room,Android,Rx Java,Android Room,我正在尝试修复crashlytics在我发布给play store的应用程序中报告的一些错误 我检查了日志,但我不知道如何修复它 io.reactivex.exceptions.UndeliverableException: at io.reactivex.plugins.RxJavaPlugins.onError (RxJavaPlugins.java:367) at io.reactivex.internal.operators.single.SingleFromCallable.
io.reactivex.exceptions.UndeliverableException:
at io.reactivex.plugins.RxJavaPlugins.onError (RxJavaPlugins.java:367)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual (SingleFromCallable.java:50)
at io.reactivex.Single.subscribe (Single.java:3603)
at io.reactivex.internal.operators.maybe.MaybeFilterSingle.subscribeActual (MaybeFilterSingle.java:40)
at io.reactivex.Maybe.subscribe (Maybe.java:4290)
at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run (MaybeSubscribeOn.java:54)
at io.reactivex.Scheduler$DisposeTask.run (Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run (ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call (ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run (FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
at java.lang.Thread.run (Thread.java:762)
Caused by: android.arch.b.b.b:
at com.eastriver.workingtimer.data.source.WorkDao_Impl$4.call (WorkDao_Impl.java:172)
at com.eastriver.workingtimer.data.source.WorkDao_Impl$4.call (WorkDao_Impl.java:129)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual (SingleFromCallable.java:44)
at io.reactivex.Single.subscribe (Single.java:3603)
实际上,我所有的rx代码都是这样处理错误的:
class MyIntentService(
private val disposable: CompositeDisposable = CompositeDisposable()
) : IntentService("MyIntentService") {
...
override fun onHandleIntent(intent: Intent?) {
disposable.add(
workDao.getWorkById(getToday())
.subscribeOn(Schedulers.io())
.subscribe({
// my logic
}, { t ->
Log.e(TAG, "error: ${t.message}", t)
})
)
}
override fun onDestroy() {
super.onDestroy()
disposable.clear()
}
}
工作地点是:
@Dao
interface WorkDao {
@Query("SELECT * FROM work WHERE id = :id")
fun getWorkById(id: Long): Single<Work>
}
@Dao
接口工作道{
@查询(“从工作中选择*,其中id=:id”)
趣味getWorkById(id:Long):单身
}
但是我在崩溃报告中找不到我的错误日志
我该怎么办?好的,在我看来,在
workDao.getWorkById(getToday())
完成之前调用了ondestry
。因此,当您的订阅服务器已被释放时,它会抛出错误。您现在可以尝试通过以下链接来处理RxJava本身的错误
干杯你添加了
getWorkById
订阅了某种复合可编程软件吗?哦,当然,我编辑了这个,你能重新检查一下吗?哦,很好!那么我还有一个问题。如果我使用RxJavaPlugins.setErrorHandler处理异常,那么应该在订阅之后运行的“我的逻辑”将不会运行,对吗?您的订阅服务器会抛出一个错误,因此最初,它不会运行my logic
,如果您的订阅服务器未被处理,它将触发Log.e(标记,“error:${t.message}”,t)
。