android - 生成足够大的列表时出现 ANR(强制关闭/等待)

标签 android android-anr-dialog

我正在创建一种文件资源管理器,如果有任何应用程序文件被复制到手机/SD 卡,我会在一个带有对话框主题的 Activity 中向用户展示它。对于每个复制的新“app.apk”,我都会将应用程序的名称和位置附加到对话框中,并且列表是可滚动的。我的问题是,如果我立即将大约 200 多个应用程序复制到存储中,列表填充会给出强制关闭/等待对话框 (ANR)。如何防止我的应用出现此类 ANR?

最佳答案

如果一些大型计算和 UI 试图同时运行并且启动需要足够的时间(大约超过 5 秒),那么系统会要求用户关闭应用程序。

为了解决这个问题,一个选择是将您的操作分配到不同的子线程,然后在异步线程 (runOnUiThread) 上运行 UI 以调度应用程序任务。

new Thread() {
    @Override
    public void run() {
        try {
            // code runs in a thread
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // code runs in a UI(main) thread
                }
            });
        } catch (final Exception ex) {
        }
    }
}.start();

关于android - 生成足够大的列表时出现 ANR(强制关闭/等待),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12855097/

相关文章:

android - 当我使用谷歌地图时生成签名的 apk 时出错?

android - 是否可以在 Android 设备上要求外部存储

android - Flutter - 在 ThemeData 中使用自定义颜色和主题

java - 这个 ANR 是什么意思?

android - Activity 不是从两个不同的开始,而是从一个开始

android - 当我的 Activity 发生变化或破坏时,如何阻止 ASyncTask 崩溃?

java - 当服务器出现时间延迟时,如何避免 Android 中的 ANR 响应?

android - Dalvik 线程状态是什么?

android - .so 模块中定义的文件不会成为最终 APK 的一部分

java - 如何使用 getPurchases() - Android