ANR产生的原因及其定位分析

简介:

ANR全称Application No Responding,是Android常见且要尽量避免的一类错误,那么,定位ANR分析并解决它,就成了一个Android开发工程师必备的能力了。

一、ANR产生的原因。
    1.只有当应用程序的UI线程响应超时才会引起ANR,超时产生原因一般有2种。
    ● 当前的事件没有机会得到处理
    ● 当前的事件正在处理,但是由于耗时太长没能及时完成
二、ANR的分类(三种)。
    1.KeyDispatchTimeout:最常见一种类型,原因是View的按键事件或触摸事件在5秒内无法得到响应。
    2.BroadcastTimout:原因是广播接收者(BrocastReceiver)的onReceive()函数在特定时间内(10秒)无法完成处理。
    3.ServiceTimeout:原因是服务(Service)的各个声明周期函数在特定时间(20秒)内无法完成处理。
三、典型的ANR问题场景。
    1.应用程序UI线程存在耗时操作,例如在UI线程中进行网络请求,数据库操作或者文件操作等,可能会导致UI线程无法及时处理用户输入等。
    2.应用程序UI线程等待子线程释放某个锁,从而无法处理用户的请求的输入。
    3.耗时操作的动画需要大量的计算工作,可能导致CPU负载过重。
四、ANR的定位和分析。
    1.LogCat日志信息。
    2.手机内部的traces.txt文件(位于/data/anr/)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值