当前位置: 首页 > 知识库问答 >
问题:

Android Room RxJava无法交付异常

宓博实
2023-03-14

我正在尝试修复crashlytics在我发布给play store的应用程序中报告的一些错误

我查看了日志,但我不知道如何修复它。。。

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()
    }
}

而WorkDao是:

@Dao
interface WorkDao {
    @Query("SELECT * FROM work WHERE id = :id")
    fun getWorkById(id: Long): Single<Work>
}

但是我在崩溃报告中找不到我的错误日志。

我该怎么办?

共有1个答案

唐星晖
2023-03-14

好的,在我看来,onDestroyworkDao.getWorkById(getDaily())完成之前被调用。因此,当您的订阅者已经被释放时,它会抛出错误。您现在可以尝试通过以下链接处理来自RxJava本身的错误https://stackoverflow.com/a/49387916/2164363

干杯

 类似资料:
  • 在本节中,我们将学习如何保护交付方法。使用XArp或静态ARP表等工具来防止中间人攻击,避免不知道的网络。另一个预防措施是确保在下载更新时使用HTTP。这将降低下载虚假更新的风险。 我们将学习另一个有用的工具,即WinMD5。当程序的签名或校验和以任何方式被修改时,该程序将提醒我们,这表明该文件不是原始文件。为了检查,我们将下载并运行WinMD5,我们可以在其中比较文件的签名和校验和。如果签名和校

  • 交付管道的建立和自动化是持续交付的基础 持续集成 更关注代码质量。持续集成是为了确保随着需求变化而变化的代码,在实现功能的同时,质量不受影响。因此,在每一次构建后会运行单元测试,保证代码级的质量。单元测试会针对每一个特定的输入去判断和观察输出的结果,而单元测试的粒度则用来平衡持续集成的质量和速度。 持续集成的核心价值在于1: 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重

  • 非技术岗位,聊了半个多小时。 问题: 介绍了课题项目,课题有什么产出,这个东西有什么好处,我说能够降低服务器成本,他问有没有数据。。。(所以面试时说的话一定要有根据,提前准备,要不面试官深问就露馅了) 问遇到过哪些挑战,怎么解决的(我说了本科保研时的经历,但是说的很笼统。现在想应该先说当时疫情待在家里,然后因为成绩不错又想读研,所以选择保研座位主选择,考研作为次选择。但是因为每年政策会变,巴拉巴拉

  • 我正在应用程序中使用Windows Azure SQL Server,当我连接到应用程序时,它显示以下错误。 hibernate.cfg.xml: .................. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/cont

  • 在我的应用程序中执行一些操作时,我得到了 Java . lang . illegalstateexception无法调用sendError() 当我再次重新加载页面时,它会正常工作一段时间,但一段时间后它再次显示相同的异常。我如何克服这个异常? 以下是例外: 支柱.xml