ANR (“Application Not Responding”)——“应用没有响应”。
当某个应用处于长期无响应状态,Android系统会弹出一个窗口上面写道,XXX is not responding给出两个按钮一个为Force close一个为Wait。
什么导致ANR发生
在Android中,应用程序是由Activity Manager和Window Manager系统服务监视的。当遇到下面任何一个情况中时,Android显示ANR:
- 主线程 (“事件处理线程” / “UI线程”) 在5秒内没有响应输入事件;
- BroadcastReceiver 没有在10秒内完成返回;
- Server没有在20秒内完成;
从代码分析ANR
ANR最终显示对话框和打印log信息方法: com.android.server.am.ActivityManagerService.appNotResponding
分析log和trace
出现ANR后需要获取的信息
- trace信息(/data/anr/traces.txt)
分析方法