Android学习笔记之ANR

什么是ANR

ANR:Application NotResponding
在Android中,如果应用程序在某一段时间内响应不够灵敏,系统就会向用户显示一个对话框,这个对话框就叫作应用程序无响应对话框。
很多时候,用户并不希望处理这个对话框,因为这样带给用户的体验是很差的。所以,在应用程序中,我们应该注意设计好程序的响应性能,使得用户在使用app时,系统不会显示ANR给用户。
在Android中,不同组件发生ANR的时间不同,比如,Activity是5秒,BroadcastReceiver是10秒,Service是20秒。

导致ANR的可能原因

可以通过查看/data/anr/traces.txt文件获取发生ANR的相关信息。
可能原因有:
1、主线程被IO操作阻塞(4.0之后网络IO操作不允许在主线程中进行)。
2、主线程中存在耗时的计算。
3、主线程中错误的操作,比如调用Thread.wait()或者Thread.sleep()时,系统会监控程序的响应状况,一旦出现4、5、6的情况,就会弹出ANR对话框。
4、应用程序在5秒内未响应用户的输入事件。
5、BroadcastReceiver未在10秒内完成相关的处理。
6、Service在特定的时间内(20秒)无法处理完成。

如何避免ANR

1、使用AsyncTask处理耗时IO操作。
2、使用Thread或者HandlerThread时,调用Process.setThreadPriority(Pr

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值