当使用Retrofit和Coroutines从API获取数据时,我有时会遇到应用崩溃,Logcat中没有堆栈跟踪,除了以下情况:AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
piwo6bdm1#
这 通常 是 由于 Retrofit 抛出 了 一 个 常见 的 异常 , 如 UnknownHostException ( 如果 没有 Internet ) , 并且 如果 您 没有 指定 一 个 CoroutineExceptionHandler , 则 协 程 会 吞 下 该 异常 。因此 , 在 启动 代码 中 添加 一 个 协 程 异常 处理 程序 , 如下 所 示 :
val coroutineExceptionHandler = CoroutineExceptionHandler{_, throwable -> throwable.printStackTrace() } fun getFromApi() { viewModelScope.launch(Dispatchers.IO + coroutineExceptionHandler) { retrofitService.getStuffFromInternet() } }
中 的 每 一 个请 注意 , 这 只是 将 错误 记录 到 Logcat , 以便 您 可以 看到 缺少 的 堆栈 跟踪 。 您 仍然 需要 找出 导致 它 的 原因 。
p5fdfcr12#
我遇到过这种类型的错误很多次,对我有效的是从模拟器中卸载应用程序,然后再次安装。
mpbci0fu3#
Default Dispatcher Worker - 1或Default Dispatcher Worker - 3,我不知道这些错误的原因,但我认为这是您正在使用的仿真器设备的某个问题,或者如果您导入了一些其他项目并在该仿真器设备上运行它,则稍后您可能会看到此错误。解决此问题的方法:只需创建新的仿真器设备或使用物理设备。
rseugnpd4#
确保模拟器/电话未处于飞行模式
oprakyz75#
检查端点是否正确。我遇到了这个问题,并通过这种方法解决
5条答案
按热度按时间piwo6bdm1#
这 通常 是 由于 Retrofit 抛出 了 一 个 常见 的 异常 , 如 UnknownHostException ( 如果 没有 Internet ) , 并且 如果 您 没有 指定 一 个 CoroutineExceptionHandler , 则 协 程 会 吞 下 该 异常 。
因此 , 在 启动 代码 中 添加 一 个 协 程 异常 处理 程序 , 如下 所 示 :
中 的 每 一 个
请 注意 , 这 只是 将 错误 记录 到 Logcat , 以便 您 可以 看到 缺少 的 堆栈 跟踪 。 您 仍然 需要 找出 导致 它 的 原因 。
p5fdfcr12#
我遇到过这种类型的错误很多次,对我有效的是从模拟器中卸载应用程序,然后再次安装。
mpbci0fu3#
Default Dispatcher Worker - 1或Default Dispatcher Worker - 3,我不知道这些错误的原因,但我认为这是您正在使用的仿真器设备的某个问题,或者如果您导入了一些其他项目并在该仿真器设备上运行它,则稍后您可能会看到此错误。
解决此问题的方法:只需创建新的仿真器设备或使用物理设备。
rseugnpd4#
确保模拟器/电话未处于飞行模式
oprakyz75#
检查端点是否正确。我遇到了这个问题,并通过这种方法解决