java - 我的应用程序出现 ANR 问题

标签 java android multithreading android-activity

我有一个相当繁重的 Activity ,UI 线程中发生了很多事情,还有 Activity 中的其他可运行线程。在此主要 Activity 中,我通过按下按钮启动一个新 Activity ,使用 startActivityForResult() 调用该按钮。现在,当我开始新 Activity 时,我收到 ANR 错误,这意味着有些事情花费的时间超过了设定的时间,并且弹出了 ForceClose/Wait 对话框。

问题是,对于新的 Activity,我只设置该 Activity 的 contentView,而没有设置其他任何内容,因此这意味着前一个 Activity 的某些内容导致其挂起。直到最近它才在应用程序中从未出现过这种情况,我无法想象我添加了什么会导致这种情况。

在第一个 Activity 中,我有 OpenFeint、SurfaceHolder.Callback、后台线程中的数据库调用以及大量图像操作。这些进程中是否有任何进程饥饿到足以导致 ANR?

我是否可以在加载第二个 Activity 时暂停第一个 Activity (我认为它确实这样做了)?就像我说的,第二个 Activity 除了加载 ContentView 之外什么也不做。

最佳答案

正如您所说,当您开始一项新 Activity 时,应暂停之前的 Activity 。但首先会调用 Activity 的 onPause。也许就是这个方法导致了ANR?特别是当它保存大量状态数据时。

这里只是猜测。

关于java - 我的应用程序出现 ANR 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540259/

相关文章:

java - 关于在 Swing 页面上添加容器的问题

android - 如何显示来自 URL 的视频

java - 我正在尝试使用 Socket 连接到 URL,但只能通过提供 IP 地址(Java android)进行连接

java - SessionFactory调用openSession抛出noSuchMethoderror异常

java VisualVM 无​​法看到本地 JVM 进程

java - 正则表达式从字符串中选取数字数量,但不选取年份

android - 将 RecyclerView 与卡片一起使用

android - 这是错误还是功能?在某些情况下,可以从不在 UI 线程上运行的任务访问 UI 线程

java - FixedThreadPool 和 ThreadPoolTask​​Executor 有什么区别?

java - 如何使用两个并发线程更新 View Android