【发布时间】:2011-12-13 10:18:03
【问题描述】:
我发现我的问题在网上被举报了很多次,但我没有找到任何正确的解释。
在我的 Galaxy Note 上,当我退出程序时,我有一段时间会在 le logcat 中看到这种消息。
threadid=3: reacting to signal 3
Wrote stack traces to '/data/anr/traces.txt'
我无法访问该文件。 DDMS 视图在资源管理器中没有显示任何内容。
我在 Internet 上读到 ANR(应用程序无响应)是由于 Activity 长过程造成的。 但就我而言,我的活动并没有做任何特殊的事情。
我正在使用启动 3 个线程的 SurfaceView。 其中一个在应用程序开始时可能需要很长时间(1 或 2 秒)(它从 sdcard 读取大数据文件),但在我退出时它最后什么都不做。
我可以在 DDMS 视图中看到 10 个进程,但我不知道 #3 是什么线程! 所以我不知道这是我启动的线程之一还是Android线程。
除了发现问题之外,我还想了解什么是信号 3。 当这个问题之王发生时。仅仅是因为某个进程没有响应还是由于另一个问题? 我在 linux (beagleboard) 下测试了我的本机代码。没有内存泄漏,也没有分段错误。 为什么这个问题只在我退出我的应用程序时发生(并且只是有时)。是不是说明我的线程销毁不正确?
我正在使用此代码
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
while (retry) {
try {
thread.join();
retry = false;
} catch (InterruptedException e) {
// try again shutting down the thread
}
}
}
我的 Activity 的 onDestroy 也有一个特殊代码。
此代码使一些本机代码免费。 因为它是 c++ 代码,所以它调用了我的对象的所有析构函数。 我不知道这个破坏是否很长,但我想它不会超过 1 毫秒。
嗯。我已经在这个问题上工作了 1 周。 如果我不明白这个问题,下一步对我来说是重新启动一个新项目并导入我的代码,部分地检查问题何时真正发生。
【问题讨论】:
-
对于崩溃文件,您可能可以查看此帖子stackoverflow.com/questions/5467972/…
标签: android crash android-ndk