6

当 Android 应用程序没有响应时,会弹出一个 ANR 对话框。我的问题是:Android 平台如何检测 ANR 并做出启动此类弹出对话框的决定。

4

1 回答 1

3

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

于 2013-01-30T20:48:26.563 回答