我正在阅读ANR
。大多数事情对我来说都有意义,但我无法理解,如果主线程被阻止,那么操作系统如何在同一进程中创建Dialog
并在屏幕上显示它。来自文档:
当出现下列情况之一时,将为您的应用程序触发ANR:
1.当您的活动位于前台时,您的应用在5秒内未响应输入事件或BroadcastReceiver
(例如按键或屏幕触摸事件)。
2.虽然前台没有活动,但BroadcastReceiver
尚未在相当长的时间内完成执行。
即主线程与另一个线程陷入僵局所以操作系统如何设置显示对话框。因为我认为我们只能从主线程显示对话框。如果我错了请纠正我,让我知道ANR
对话的过程。
任何解释都会非常感激。 THX
答案 0 :(得分:1)
这是因为不是你的应用程序负责显示对话框。系统处理它。来自documentation
如果应用位于前台,系统会向用户显示一个对话框
因此,当您的应用程序是ANR时,外部“应用程序”(或意图,如果您愿意),将处理弹出对话框,允许您终止ANR应用程序......
另外,请阅读this以了解ANR与崩溃之间的区别