OnResume 快速连续调用

问题描述 投票:0回答:1

我的应用程序在生产中发生崩溃,原因是 java.util.ConcurrentModificationException。

在崩溃日志的面包屑中,我注意到活动的 onResume 被快速连续调用两次(在几十毫秒或最多大约 300 毫秒内),例如 onResume->onPause->onResume。我的应用程序在 onResume 中使用 IO 调度程序启动一个协同例程,该协同例程在一个列表上运行,当快速连续调用 onResume 时,会启动 2 个线程,并且它们访问相同的列表,从而导致崩溃。

有人知道什么时候可以如此快速地连续调用 onResume 吗?用户不太可能这么快做到这一点。我确实注意到在很多情况下,崩溃发生在屏幕唤醒期间,但并非全部。

android android-activity kotlin-coroutines android-lifecycle
1个回答
0
投票

经过一些分析,这可能是一种边缘情况,当 Activity 处于活动状态时应用程序调用 onResume 时,可能会显示其他一些应用程序或对话框,然后消失,导致 onResume 被调用 2 次。我添加了代码以使用同步来防止列表被并发访问,这修复了错误。

© www.soinside.com 2019 - 2024. All rights reserved.