不包含任何活动(即独立服务)的android进程可以收到ANR吗?
Android 提到:“在 Android 中,应用程序响应能力由 Activity Manager 和 Window Manager 系统服务进行监控。当 Android 检测到以下条件之一时,将显示特定应用程序的 ANR 对话框:”
这是否意味着没有 UI 界面的服务可能会或不会导致 ANR?
是的,您可以在包含独立服务(无活动)的流程中获取 ANR。您将在 logcat 中看到 ANR(从技术上讲,它是 ANR)。举个例子,我在以下情况中看到过这种情况:
我们有一个 BroadcastReceiver,它与独立服务在同一进程中运行。这在主线程上运行。如果广播意图无法在合理的时间内分派到BroadcastReceiver(因为有东西阻塞了主线程),操作系统会生成ANR。文档似乎表明 10 秒是 BroadcastReceiver 完成的限制。
一般来说,在独立服务进程的主线程上运行的唯一东西是生命周期方法(onCreate、onDestroy 等)、BroadcastReceivers 以及由您在主线程上创建的 Handler 分派的任何内容。其余代码在其他线程中运行。
我想回答你对 CommonWare 答案的评论,但我对此没有足够的声誉。因此,我创建了另一个答案,希望其中包含您想要的信息。
| 归档时间: |
|
| 查看次数: |
903 次 |
| 最近记录: |