【精】android anr专题

背景:

只有主线程才可以更新ui,因为为了防止多线程访问变量导致错误的问题,所以更新ui全部是在主线程中。我们可以通过handler 或者view 的post 的方法进行更新,还有runinUiThread等。

 

github: https://github.com/kodulf/ANRDemo

 

发生原因:

主线程执行时间超过5秒钟,broadcast 的onReceiver 方法执行超过了10秒钟,service 执行时间超过了15秒

Activity----->5秒
Broadcast----->10秒
Service----->20秒
会报ANR,都是在主线程中运行的

可能是下载的操作是在主线程直接进行操作了,例如broadcast的onreceiver 里面执行的时间太长了,service

 

举个例子:

比方kfc, 前面点餐员,如果你还让点餐员去给你拿餐,人少的时候还可以,可以快速的响应你,如果人多的时候,那么,可能就会出现后台做不过来,需要点餐员在那边等着然后才能给你拿。

正确的做法应该是,点餐员就负责给你点餐,然后后面有专门的人负责给你去餐,点完餐在旁边等待就好了,不要打扰后面的人点餐。

 

解决思路:

1: 当前的怎么check log 

如果出现了anr,那么会有两个地方的log,

1.1 首先就是logcat 里面的log,我们可以定位到线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值