Android ANR发生缘由总结(zhuan)

  

ANR(Application Not Responding) Android系统中应用无响应数据库

是Android系统中比较常见的问题,当出现ANR时通常状况会弹出一个带有如下文字的对话框提示:网络

Activity XXX(in XXXXX) is not responding. 好比:大数据

粗略的来分会有两种状况致使ANR:spa

第一类:dispatchTimeout 输入事件分发超时,通常是因为主线程在5秒以内没有响应输入事件。线程

第二类:BroadcastReceiver没有在系统设定的时间内完成并返回。server

再细分的话ANR多是由主线程致使也多是由非主线程致使:事件

因为主线程致使的状况:it

1.耗时网络访问io

2.当有大量数据读写操做时再请求数据读写ast

3.数据库操做(好比其余大数据量应用访问数据库致使数据库负载太重时)

4.硬件操做(好比Camera)

5.调用thread_join() / Sleep() / Wait() 或者等待locker的时候

6.Service binder数量达到上限

7.在system_server中发生WatchDog ANR

8.Service忙致使超时无响应

因为非主线程致使的状况:

1.非主线程持有lock,致使主线程等待lock超时

2.非主线程终止或者崩溃致使主线程一直等待

相关文章
相关标签/搜索