Android平台如何检测ANR问题?

dac*_*ngy 6 android android-anr-dialog

当Android应用程序没有响应时,会弹出ANR对话框.我的问题是:Android平台如何检测ANR并决定启动这样的弹出对话框.

Gab*_*han 4

它基于 UI 线程以及 UI 线程返回消息循环所需的时间(消息循环对应用程序开发人员来说是隐藏的,但 UI 线程上有一个巨大的循环用于接收用户输入的消息,绘制请求、AsyncTask 完成等)。基本上,每条消息在声明 ANR 之前都有固定的时间。花在睡眠等待消息上的时间永远不会导致 ANR。Android 中有一个单独的看门狗进程,用于检查线程上次到达循环顶部以来的时间,如果时间太长,则会杀死该线程并显示 ANR 对话框。