定义
ANR的全称是application not responding,意思就是程序未响应。
发生条件
-
主线程(UI线程)才能产生ANR
-
必须发生某些输入事件或者特定操作时,比如按键或者触屏等输入事件,在BroadcastReceiver或Service的各个生命周期调用函数;
-
下列事件响应超时,不同的context规定的上限时间不同
a.主线程对输入事件5秒内没有处理完毕 b.主线程在执行BroadcastReceiver的onReceive()函数时10秒内没有处理完毕 c.主线程在Service的各个生命周期函数时20秒内没有处理完毕。
常见原因
- 耗时的网络访问
- 大量的数据读写
- 数据库操作
- 硬件操作
- 调用Thread的sleep方法,wait方法或者等待线程锁的时候
网友评论