对话框会阻止其余代码执行吗?

Posted

技术标签:

【中文标题】对话框会阻止其余代码执行吗?【英文标题】:Do dialogs prevent rest of code from executing? 【发布时间】:2016-05-27 23:19:40 【问题描述】:

我有一个显示消息自定义对话框类(继承自 Dialog)的活动,如果设备出现超时或断电,会提醒用户。该活动还调用警报管理器来安排任务。

如果显示对话框,是否会阻止警报管理器发送广播?我看了this answer,还是不确定。谷歌官方文档说对话框保持焦点并且可以打断其余的代码。我也有几个处理程序在这个活动上运行。对话框的出现是否会阻止它们的执行?

【问题讨论】:

【参考方案1】:

如果显示对话框,是否会阻止警报管理器发送广播?

不,除非您以某种方式在对话框中占用了主应用程序线程,在这种情况下,您无论如何都会因应用程序无响应 (ANR) 而崩溃。

对话框的出现是否会阻止它们的执行?

同样,这些应该仍然有效。对话框是事件驱动的。从用户的角度来看,它们是模态的(用户无法与您的底层活动交互),但它们不是阻塞的(show() 或等效的,立即将控制权返回给您)。

【讨论】:

经过测试,警报管理器和处理程序仍在运行。 能够通过 BroadcastReceiver 和 Service 迁移到另一个活动,同时显示对话框。

以上是关于对话框会阻止其余代码执行吗?的主要内容,如果未能解决你的问题,请参考以下文章

PyQt:为啥弹出对话框会阻止其他代码的执行?

Javascript块脚本执行

在启动程序关闭之前,其余代码将不会执行[重复]

VC++如何实现 弹出窗口,然后等窗口关闭后再执行剩下的代码?

如何阻止警告对话框停止执行控制它的 Python 程序?

c# 怎么阻止事件执行