ANR

ANR是Android系统中的Application Not Responding现象,当APP在5秒内未响应用户输入或BroadcastReceiver在10秒内未完成时触发。常见原因是主线程执行了耗时操作。定位ANR问题可通过分析bug描述、堆栈信息、CPU使用情况和系统负载。避免ANR的关键在于不在主线程做耗时操作,合理使用AsyncTask和Service,以及避免同步和死锁。
摘要由CSDN通过智能技术生成

1.何为ANR

    ANR(Application Not Responding )应用无响应的简称,是为了在 APP卡死时,用户 可以强制退出APP的选择,从而避免卡机无响应问题,这是Android系统的一种自我保护机制。

2.为什么会产生ANR

  在Android里, App的响应能力是由Activity Manager和Window Manager系统服务来监控的. 通常在如下两种情况下会弹出ANR对话框:

  • 5s内无法响应用户输入事件(例如键盘输入, 触摸屏幕等).
  • BroadcastReceiver在10s内无法结束.

 造成以上两种情况的首要原因就是在主线程(UI线程)里面做了太多的阻塞耗时操作, 例如文件读写, 数据库读写, 网络查询等等.

 

3.出现ANR的时候,如何定位,分析问题呢? 

1:查看 bug 上面的描述信息,看下堆栈,cpu 使用情况。 
首先我们要确定的是否此 log 有效。 
确认依据:看 bug 的描述 
看 bug 提供的描述信息,堆栈异常是否和标题一致。 
如果不一致,此问题直接给出分析结果,转出对应模块负责。 
如果一致,我们需要去看 trace 文件,查看里面的出现的栈信息是否和描述的一致。(通过看测试贴出的 anr 栈里面的时间信息,和我们的 trace 的时间是否一致,一致,此份 trace 有效) 
如果不一致,我们需要去看 log,搜索 am_anr,看下是否在测试贴出的 anr 栈的时间信息处࿰

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值