25.2.3ANR异常的处理
ANR,是“Application NotResponding”的缩写,即“应用程序无响应”。在Android中,Activity Manager和Window Managersystem Service会监测应用程序的响应能力, 当监测到发生以下两种情况时:
当APP在5秒内没有响应输入时间(如按键或触屏操作)
当APP接收到广播消息后,没有在10秒内完成处理
Android会显示一个对话框,提示用户APP没有响应,用户可以选择继续等待或者关闭这个应用程序,如下所示:
(https://developer.android.com/training/articles/perf-anr.html#Avoiding)
目前遇到比较多的情况是第一种,以下描述对第一种情况的处理。
第一种的情况通常发生在APP的主线程,可以使用简单记录数值的方法,判断主线程的运行状况。
在APP启动的时候,运行一个Service,在Service中检测主线程的运行状况,代码如下:
publicclass ANRService extends Service {
private String TAG = "ANRService";
private int workThreadTick = 0;
priv