Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 主线程处于阻塞状态时ANR对话框的显示方式_Android - Fatal编程技术网

Android 主线程处于阻塞状态时ANR对话框的显示方式

Android 主线程处于阻塞状态时ANR对话框的显示方式,android,Android,我正在读《代码》和《代码》。大多数事情对我来说都是有意义的,但我不明白,如果主线程被阻塞,那么操作系统如何在同一进程中创建一个对话框,并在屏幕上显示它。从文件中: 当下列情况之一发生时,应用程序将触发ANR: 1.当您的活动处于前台时,您的应用程序在5秒内未响应输入事件或广播接收器(如按键或屏幕触摸事件)。 2.虽然前台没有活动,但您的BroadcastReceiver尚未在相当长的时间内完成执行 i、 e主线程与另一个线程处于死锁状态,因此操作系统如何显示对话框。因为我认为我们只能从主线程显示

我正在读《代码》和《代码》。大多数事情对我来说都是有意义的,但我不明白,如果主线程被阻塞,那么操作系统如何在同一进程中创建一个
对话框
,并在屏幕上显示它。从文件中:

当下列情况之一发生时,应用程序将触发ANR:

1.当您的活动处于前台时,您的应用程序在5秒内未响应输入事件或广播接收器(如按键或屏幕触摸事件)。

2.虽然前台没有活动,但您的
BroadcastReceiver
尚未在相当长的时间内完成执行


i、 e主线程与另一个线程处于死锁状态,因此操作系统如何显示对话框。因为我认为我们只能从主线程显示对话框。如果我错了,请纠正我,并让我知道
ANR
对话框的过程。
如有任何解释,将不胜感激。Thx

这是因为显示对话框的不是你的应用程序。系统处理它。从

如果应用程序位于前台,系统将向用户显示一个对话框

因此,当您的应用程序是ANR时,一个外部“应用程序”(或意图,如果您愿意)将处理弹出的对话框,允许您终止ANR应用程序


另外,阅读以了解ANR和crash之间的区别

那么您指的是从另一个应用程序(系统应用程序)的
上下文打开的
对话框
?是的。这是一个
系统对话框
。。。它是由操作系统本身提出的。如果您想手动处理(主要是关闭)一个系统对话框,请阅读本手册,您有一个特殊的意图,即收听(即广播侦听器)。它叫