Android ANR产生原因汇总

Android ANR产生原因

ANR(程序未响应)只会产生在主线程中:

1、主线程对输入事件(按键或触屏)5秒内没有处理完毕;

2、主线程在执行BroadcastReceiver的onReceive()函数时10秒内没有处理完毕;

3、主线程在Service的各个生命周期函数时20秒内没有处理完毕;


具体产生原因:

1.耗时的网络访问

2.大量的数据读写

3.数据库操作

4.硬件操作(比如camera)

5.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候

6.service binder的数量达到上限

7.system server中发生WatchDog ANR

8.service忙导致超时无响应

9.其他线程持有锁,导致主线程等待超时

10.其它线程终止或崩溃导致主线程一直等待


你可能感兴趣的:(android)