分类
InputDispatching Timeout
:输入事件(包括按键和触屏事件)在5秒内无响应,就会弹出 ANR 提示框,供用户选择继续等待程序响应或者关闭这个应用程序(也就是杀掉这个应用程序的进程)。输入超时类的 ANR 可以细分为: 处理消息超时
、无法获取焦点
Broadcast Timeout
:BroadcastReceiver在规定时间内(前台广播10秒,后台广播60秒)无法处理完成,就会报广播超时的消息。
Service Timeout
:Service在规定时间内(前台服务20秒,后台服务200秒)无法处理完成,就会报服务超时。
ContentProvider Timeout
:ContentProvider 的 publish 在10s内没有完成,会报 ANR。多发于android.process.media中。
超时时间定义
Activity
static final int WINDOW_FREEZE_TIMEOUT_DURATION = 2000;
public static final int KEY_DISPATCHING_TIMEOUT_MS = 5 * 1000;
static final int INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT_MS = 60 * 1000;
static final int MAX_ACTIVITIES=20;
private static final int PAUSE_TIMEOUT = 500;
private static final int STOP_TIMEOUT = 11 * 1000;
private static final int DESTROY_TIMEOUT = 10 * 1000;
Service
定义在ActivityServices中
static final int SERVICE_TIMEOUT = 20*1000;
static final int SERVICE_BACKGROUND_TIMEOUT = SERVICE_TIMEOUT * 10;
BroadcaseReceiver
定义在AMS中
static final int BROADCAST_FG_TIMEOUT = 10*1000;
static final int BROADCAST_BG_TIMEOUT = 60*1000;
ContentProvider
定义在AMS中
static