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

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

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

【问题讨论】:

    标签: android android-activity dialog


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 经过测试,警报管理器和处理程序仍在运行。
    • 能够通过 BroadcastReceiver 和 Service 迁移到另一个活动,同时显示对话框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2017-10-08
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    相关资源
    最近更新 更多