我从whatsapp观察到这样的行为:当一条新消息到达时,whatsapp将启动一个对话式的活动,这样的活动可以被用户取消或确认。
因此,我在我的应用程序中添加了类似的对话框样式活动。出于测试目的,我还添加了一个警报管理器和一个警报接收器,以便警报接收器每10秒启动一次此活动。
我用来启动对话框样式活动的代码是:

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

如果我的应用程序没有启动,一切看起来都很好。对话活动将显示,后面是主屏幕,就像whatsapp的行为一样。
但有一个问题,如果我的应用程序已经启动并放到后台,然后警报触发了对话框活动的启动,在对话框活动启动之前,我的应用程序的主活动将返回前台并显示。
我很困惑,我现在只想知道,即使我的应用程序已经启动,当一些事情触发了对话框样式的活动时,只有这个对话框样式的活动才会显示,没有主活动或任何其他不相关的活动。
有人能帮忙吗?

最佳答案

应用程序维护一个活动堆栈。所以在应用程序的活动堆栈中,主活动a和对话活动b表示为a->b。
当你的应用程序启动并放到后台时。当调用对话活动并将其置于前台时,主活动a仍处于活动状态,因此也将显示。也许您可以在启动后活动(DialogActivity)中调用“finish()”,以确保完成并离开。

09-10 07:20
查看更多