和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、ANR 概述
二、ANR的类型
三、ANR 产生的原因
四、如何分析解决 ANR问题
五、ANR 问题分析解决建议
六、MTK 平台 ANR问题分析
一、 ANR 概述
在Android
中,应用程序响应由Activity Manager
和Window Manager
系统服务进行监视。ANR(Application Not Responding )
,则是Android
的一种自我保护措施,当主线程出现卡顿时候,Android
系统会给用户一个弹出提示,让用户手动选择继续等待还是强制关闭此APP
。
当Android检测到以下情况之一时,Android
将显示特定应用程序的ANR
对话框,比如以下三种情况下ANR
将经常发生:
1.
UI Thread
超过5 s
没有响应2.
Broadcast
广播超过10 s
没响应3.
Service
服务超过20s
没响应
因此,为避免ANR
发生,请不要在主线程中进行耗时操作,耗时操作请尽量在子线程中运行。
4.发生
ANR
截图 如下:
ANR Dialog 举例
二、 ANR的类型
ANR
在Android
手机中很常见,按其相应类型可以分为以下 常见 三种类型。
ANR类型如下:
按键响应分发超时(Key Dispatch Timeout)
默认5 s
,超过则会出现ANR。广播超时(Broadcast Timeout)
默认10 s
,超过则会出现ANR。服务超时(Service Timeout)
默认20 s
,超过则会出现ANR。
三、ANR 产生的原因
在Android
系统中,