【问题标题】:How does the Android platform detect ANR problems?Android 平台如何检测 ANR 问题?
【发布时间】:2013-01-30 20:43:26
【问题描述】:

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

【问题讨论】:

  • 来自developer.android.com/training/articles/perf-anr.html,在子标题“什么触发ANR?”下:“通常,如果应用程序无法响应用户,系统会显示ANR输入。例如,如果应用程序阻塞了 UI 线程上的某些 I/O 操作(通常是网络访问),因此系统无法处理传入的用户输入事件。"

标签: android android-anr-dialog


【解决方案1】:

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

【讨论】:

  • 除此之外,我相信 Android 会运行 5 秒输入事件超时,之后会显示 ANR
猜你喜欢
  • 2015-05-18
  • 2021-03-16
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
相关资源
最近更新 更多