【问题标题】:Unexpected behavior when launching a dialog-style activity启动对话框式活动时的意外行为
【发布时间】:2011-12-08 12:34:18
【问题描述】:

我从 WhatsApp 观察到这样的行为:当有新消息到达时,WhatsApp 会启动一个对话式的活动,而这样的活动可以被用户取消或确认。

因此,我在我的应用程序中添加了一个类似的对话框式活动。出于测试目的,我还添加了一个警报管理器和一个警报接收器,以便警报接收器每 10 秒启动一次此活动。

我用来启动对话框式活动的代码是:

   Intent dialogIntent = new Intent(MyApplication.sharedApplication, MyDialogStyleActivity.class);
   dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   MyApplication.sharedApplication.startActivity(dialogIntent);

如果我的应用程序没有启动,一切看起来都很好。对话活动将显示 ,其后面是主屏幕,就像 WhatsApp 的行为一样。

但是有一个问题,如果我的应用程序已经启动并放在后台,然后警报触发了对话活动的启动,在对话活动启动之前,我的应用程序的主要活动会回来前景和显示。

我很困惑,我现在想要的是,即使我的应用程序已经启动,当某些东西触发对话式活动时,只有这个对话式活动会显示,没有主活动或任何其他不-相关活动。

有人可以帮忙吗?

【问题讨论】:

    标签: java android android-activity android-intent


    【解决方案1】:

    您的应用程序维护一个活动堆栈。因此,您的主要活动 A 和对话活动 B 在应用的活动堆栈中表示为 A->B。

    当您的应用启动并置于后台时。当您的对话活动被调用并被带到前台时,您的主要活动 A 仍处于活动状态,因此也会显示出来。也许您可以在 startActivity(dialogActivity) 之后在 A 中调用“finish()”,以确保 A 完成并消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2011-03-22
      相关资源
      最近更新 更多