获取Android运行时:致命异常:DefaultDispatcher-worker-1,没有其他堆栈跟踪

xdnvmnnf  于 2022-11-20  发布在  Android
关注(0)|答案(5)|浏览(604)

当使用Retrofit和Coroutines从API获取数据时,我有时会遇到应用崩溃,Logcat中没有堆栈跟踪,除了以下情况:AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1

piwo6bdm

piwo6bdm1#

这 通常 是 由于 Retrofit 抛出 了 一 个 常见 的 异常 , 如 UnknownHostException ( 如果 没有 Internet ) , 并且 如果 您 没有 指定 一 个 CoroutineExceptionHandler , 则 协 程 会 吞 下 该 异常 。
因此 , 在 启动 代码 中 添加 一 个 协 程 异常 处理 程序 , 如下 所 示 :

val coroutineExceptionHandler = CoroutineExceptionHandler{_, throwable ->
    throwable.printStackTrace()
}

fun getFromApi() {
    viewModelScope.launch(Dispatchers.IO + coroutineExceptionHandler) {
        retrofitService.getStuffFromInternet()
    }
}

中 的 每 一 个
请 注意 , 这 只是 将 错误 记录 到 Logcat , 以便 您 可以 看到 缺少 的 堆栈 跟踪 。 您 仍然 需要 找出 导致 它 的 原因 。

p5fdfcr1

p5fdfcr12#

我遇到过这种类型的错误很多次,对我有效的是从模拟器中卸载应用程序,然后再次安装。

mpbci0fu

mpbci0fu3#

Default Dispatcher Worker - 1或Default Dispatcher Worker - 3,我不知道这些错误的原因,但我认为这是您正在使用的仿真器设备的某个问题,或者如果您导入了一些其他项目并在该仿真器设备上运行它,则稍后您可能会看到此错误。
解决此问题的方法:只需创建新的仿真器设备或使用物理设备。

rseugnpd

rseugnpd4#

确保模拟器/电话未处于飞行模式

oprakyz7

oprakyz75#

检查端点是否正确。我遇到了这个问题,并通过这种方法解决

相关问题