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

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

Activity XXX(in XXXXX) is not responding. 比如:


粗略的来分会有两种情况导致ANR:

第一类:dispatchTimeout 输入事件分发超时,一般是由于主线程在5秒之内没有响应输入事件。

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

再细分的话ANR可能是由主线程导致也可能是由非主线程导致:

由于主线程导致的情况:

1.耗时网络访问

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

3.数据库操作(比如其他大数据量应用访问数据库导致数据库负载过重时)

4.硬件操作(比如Camera)

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

6.Service binder数量达到上限

7.在system_server中发生WatchDog ANR

8.Service忙导致超时无响应

由于非主线程导致的情况:

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

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

更多相关文章

  1. Android(安卓)Volloy 网络请求框架图
  2. Android使用https链接
  3. TinyTask: 一个Android异步任务处理库
  4. handler.post 运用
  5. AsyncHttpClient
  6. android文件导出错误—— failed to pull a selection
  7. Android(安卓)Volley 网络请求框架图
  8. Android(安卓)ANR原因以及开发时如何预防
  9. Android(安卓)Handler学习之异步与多线程(★推荐)

随机推荐

  1. Git 工具和指令集合
  2. 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显
  3. 删去k个数字后的最小值
  4. 为何SYSTEM用户可以将V$SESSION的查询权
  5. SQL数据库被eject后缀勒索病毒加密,该如何
  6. STAR原则是什么?
  7. 中毒.Delta865qqz后缀的文件该如何解决?
  8. Zabbix各种报错信息和遇到的问题
  9. 痞子衡嵌入式:了解i.MXRT1060系列ROM中串
  10. 痞子衡嵌入式:深入i.MXRT1050系列ROM中串