ANR问题基本定位与分析

本文详细介绍了Android中的ANR(Application Not Responding)问题,包括ANR的三种类型:输入超时、广播超时和服务超时。讨论了如何通过日志分析和定位ANR问题,提供了几种常见的ANR分析思路,如input等待和线程锁问题,并总结了触发ANR的常见原因,如网络、线程、IO和数据库操作等。
摘要由CSDN通过智能技术生成

一、ANR类型

ANR,即“Application not responding”,在Android中,ManagerService会检测应用的响应时间,如果在约定时间内没有完成,那么系统就会判定应用ANR。

1、输入超时

05-28 11:25:00.420 ?1668 ?1713 E ActivityManager: PID: 23293
05-28 11:25:00.420 ?1668 ?1713 E ActivityManager: Reason: Input dispatching timed out (Waiting because no window has focus but there is a focused application that may eventually add a window when it finishes starting up.)

我们可以看到,当ANR类型是由输入超时引发时,我们通过日志可以检索到Input dispatching timed out,Android系统对输入的约定一般时前台8s,后台8s,但对于原生应用,可能会被限制在4-5s内

2、广播超时
广播根据Foreground类型,分为前台10s,后台60s,这里需要注意时间,后续分析日志信息的时候,我们需要根据这个信息去在对应的时间区间内寻找日志信息

Subject : broadcast of Intent/BROADCAST_TIMEOUT_MSG(xxxxxxxxxxxx)

3、Service超时

同样,Service超时也根据Foreground的类型分为前台10s,后台20s,其作用类似

下面展示一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值