浅谈android应用之ANR

1. 前言

更多内容请查看android生态之应用篇

由于ANR理解比较简单,这边就只以它产生原理,预防方法两个方面进行说明。

2. 产生原理

所谓ANR,即Application Not Respond的缩写,产生这个异常的最根本原因是由于UI线程阻塞时间过长,导致按键,广播,服务的事件在规定的时间内无法响应导致的。为啥我们经常会提到说不要在UI线程进行耗时操作也就是这个原因,虽然耗时操作不一定会使你的程序直接崩溃,但是这样做可能会导致ANR的问题,降低了android程序的稳定性。

3. 预防方法

我们可能会了解到ANR的产生有以下几种类型:
(1). KeyDispatchTimeout(5 seconds) --按键或触摸事件在特定时间内无响应
(2). BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成
(3). ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处理完成

根据第二节的内容可知,其实预防ANR往简单来说也就一句话的事情:不要在UI线程进程耗时操作。
具体实现简单来说就是耗时操作新开一个线程进行,然后通过Handler这个桥梁进行线程间通信,最终实现更新UI操作。

说的比较简单,如有疑问,可在评论下方留言。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值