当 Android 应用程序无响应时,会弹出 ANR 对话框。我的问题是:Android 平台如何检测 ANR 并做出这样一个弹出对话框的决定。
当 Android 应用程序无响应时,会弹出 ANR 对话框。我的问题是:Android 平台如何检测 ANR 并做出这样一个弹出对话框的决定。
这基于UI线程及其回到消息循环所需时间(消息循环对应用开发者来说是隐藏的,但在你的UI线程上有一个接收用户输入、绘图请求、AsyncTask完成等消息的巨大循环)。基本上,在每个消息之前,你都有一定的固定时间,否则就会导致ANR。等待消息时花费的睡眠时间永远不会导致ANR。在Android中,有一个单独的看门狗进程,检查该线程自上次到达该循环顶部以来的时间长度,如果时间过长,则会终止它并显示ANR对话框。