博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ANR发生原因总结
阅读量:6950 次
发布时间:2019-06-27

本文共 567 字,大约阅读时间需要 1 分钟。

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.非主线程终止或者崩溃导致主线程一直等待

 

From:

转载地址:http://nuuil.baihongyu.com/

你可能感兴趣的文章
Git基础之(十五)——分支管理——分支管理策略
查看>>
【sed 工具的使用】
查看>>
使用PyInstaller将Python程序打包成一个单独的exe文件
查看>>
Hyperledger Fabric 实战(八):couchdb 丰富查询 selector 语法
查看>>
ServiceNow常用角色和分组
查看>>
修改数据库归档模式
查看>>
javascript基础(json数据操作)
查看>>
afinal第一炮
查看>>
NFS客户端在/etc/fstab设置开机挂载后,开机时无法进入系统
查看>>
LINUX 命令手册
查看>>
【二 HTTP编程】2. HTTP路由
查看>>
数据分析的广阔前景
查看>>
Android AlertDialog的一切
查看>>
SRE之道:创造软件系统来维护系统运行
查看>>
Go Get设置代理
查看>>
linux定位异常前后日志信息
查看>>
我的友情链接
查看>>
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
查看>>
java 访问Domino LOtus 数据库
查看>>
C#匿名方法的用法
查看>>