我有一个相当繁重的 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/