王学岗ANR异常

1什么是ANR异常(application not response)
1)在android中,如果你的应用程序在一段时间内没有响应,那么在这个时候,系统就会向用户显示一个对话框,这个对话框叫做程序无法响应对话框,用户在可以选择“等待“(wait in)让程序继续运行,也可以选择“确定”(shut off)

但是一个正常的app你是不能出现这样的ANR异常,让用户每一次都要等待处理这个对话框,所以我们在开发app一定要避免ANR异常
2什么情况下会出现ANR异常?
应用程序的响应是由ActivityManager和WindowManager系统服务来监听。
1)在5秒之内没有响应输入事件(返回建 屏幕触摸)
2)BroadCastReceiver在10秒内没有执行完毕。
3)Service中20秒没有处理完毕。小概率。
例如:在主线程中做了很多耗时操作,比如 下载 IO操作,图片加载,数据库操作,
高耗时的图片尺寸处理,高复杂的视图加载。
3怎么避免ANR异常
1)运行在主线程里面的任何方法都要尽量少做事情。特别是在Activity的OnCreate() onResume()方法中尽量少做一些创建操作。尽量采用子线程的方式处理。然后Handler+message的方式来做复杂 耗时的操作。比如更新主线程UI
2) 尽量避免BroadCastRecerver中做耗时计算和操作,也不能在子线程中去做,替代的方法,响应intent广播需要执行一个耗时操作的话,应用程序启动一个Service
3)避免Intent Recerver里面启动一个Activity,因为activity会创建一个新的界面,就会从当前程序中抢夺焦点。比如说你的程序在响应intent广播时需要去展示什么,你应该使用Notification Manager来实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值