对话框会阻止其余代码执行吗?
Posted
技术标签:
【中文标题】对话框会阻止其余代码执行吗?【英文标题】:Do dialogs prevent rest of code from executing? 【发布时间】:2016-05-27 23:19:40 【问题描述】:我有一个显示消息自定义对话框类(继承自 Dialog)的活动,如果设备出现超时或断电,会提醒用户。该活动还调用警报管理器来安排任务。
如果显示对话框,是否会阻止警报管理器发送广播?我看了this answer,还是不确定。谷歌官方文档说对话框保持焦点并且可以打断其余的代码。我也有几个处理程序在这个活动上运行。对话框的出现是否会阻止它们的执行?
【问题讨论】:
【参考方案1】:如果显示对话框,是否会阻止警报管理器发送广播?
不,除非您以某种方式在对话框中占用了主应用程序线程,在这种情况下,您无论如何都会因应用程序无响应 (ANR) 而崩溃。
对话框的出现是否会阻止它们的执行?
同样,这些应该仍然有效。对话框是事件驱动的。从用户的角度来看,它们是模态的(用户无法与您的底层活动交互),但它们不是阻塞的(show()
或等效的,立即将控制权返回给您)。
【讨论】:
经过测试,警报管理器和处理程序仍在运行。 能够通过 BroadcastReceiver 和 Service 迁移到另一个活动,同时显示对话框。以上是关于对话框会阻止其余代码执行吗?的主要内容,如果未能解决你的问题,请参考以下文章