对 Android 的 ANR 进行研究
发布时间
阅读量:
阅读量
前言
ANR(Application Not Responding)指的是应用无响应现象,在Android操作系统中,当应用出现ANR时,其具体类型主要包括以下几种:
| 类型 | 说明 |
|---|---|
| KeyDispatchTimeout | 最常见的ANR类型是对输入事件5秒内无响应,比如按键或者触摸事件在此时间内无响应。 |
| BroadcastTimeout | BroadcastTimeout是在指定时间内(原生系统默认是10s)内无法处理完成,并且没有结束执行onReceive。 |
| ServiceTimeout | 这种类型在Android应用中出现的概率很小,是指Service在特定的时间(原生系统是20s)内无法处理完成。 |
引发ANR现象的核心因素主要可以归纳为以下两类:
- 应用程序自身存在逻辑错误,或在特定异常情况下触发了此类问题,例如主线程出现阻塞、死循环等情况所引起的。
- 因Android设备上其他进程占用大量CPU资源,致使当前应用程序无法成功获取到CPU时间片。
主线程ANR问题分析
- 消耗时间的网络交互行为。
- 在存在大量数据读取与写入操作的情况下,才发起数据访问请求。
- 数据库相关操作(例如,当其他大数据量应用访问数据库时,导致数据库负载过高)。
- 硬件资源调用(例如摄像头设备)。
- 在调用
全部评论 (0)
还没有任何评论哟~
