android anr trace 分析,Android ANR分析

本文介绍了Android ANR的三种类型,包括KeyDispatchTimeout、BroadcastTimeout和服务超时,并探讨了引发ANR的根本原因。当ANR发生时,系统会生成trace文件,通过Logcat和Analyze Stacktrace工具可以分析其详细信息。通过示例代码模拟ANR,展示了如何定位到问题所在行,指出长时间线程睡眠可能导致ANR。
摘要由CSDN通过智能技术生成

前言

ANR(Application Not Responding)即应用无响应,在Android系统中,应用发生的ANR由以下几种类型:

类型

说明

KeyDispatchTimeout

最常见的ANR类型是对输入事件5秒内无响应,比如按键或者触摸事件在此时间内无响应。

BroadcastTimeout

BroadcastTimeout是在指定时间内(原生系统默认是10s)内无法处理完成,并且没有结束执行onReceive。

ServiceTimeout

这种类型在Android应用中出现的概率很小,是指Service在特定的时间(原生系统是20s)内无法处理完成。

引起ANR的根本原因总体来说有以下两种:

应用程序本身逻辑有缺陷,或者在某些异常场景触发了此缺陷,如主线程堵塞、死锁循环等导致的。

由于Android设备其他进程的CPU占用搞,导致当前应用进程无法抢占到CPU时间片。

ANR文件介绍

在Android系统中,如果发生ANR,Logcat会产生对应的日志和一个trace文件,分析ANR的原因主要是分析这两个信息。trace文件在Android中的路径为/data/anr/traces.txt,可以使用adb来获取,adb pull /data/anr/traces.txt。

Logcat文件信息信息:

信息

说明

ANR IN

发生AND的具体类。

PID

发生ANR的进程,系统在此时会产生trace文件,当前的时间点也是发生ANR的具体时间,以及生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值