我从WhatsApp观察到这样的行为:当新消息到来时,WhatsApp将启动对话式活动,用户可以取消或确认此类活动。
因此,我在我的应用中添加了类似的对话式活动。出于测试目的,我还添加了一个警报管理器和一个警报接收器,以便警报接收器每10秒启动一次此活动。
我用来启动对话式活动的代码是:
Intent dialogIntent = new Intent(MyApplication.sharedApplication, MyDialogStyleActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MyApplication.sharedApplication.startActivity(dialogIntent);
如果我的应用程序尚未启动,一切看起来都很好。对话框活动将显示,其后面是主屏幕,就像WhatsApp的行为一样。
但是有一个问题,如果我的应用程序已经启动并放在后台,然后警报触发了对话框活动的启动,在对话框活动启动之前,我的应用程序的主要活动将会回来前景和展示。
我很困惑,我现在想要的是,即使我的应用程序已经启动,当某些东西触发对话式活动时,只有这种对话式活动会显示,没有主要活动或任何其他相关活动。
任何人都可以提供帮助吗?
答案 0 :(得分:4)
您的应用程序维护一个活动堆栈。因此,您的主要活动A和对话活动B在您应用的活动堆栈中表示为A-> B.
当您的应用启动并投放到后台时。当您调用对话框活动并将其带到前台时,您的主要活动A仍处于活动状态,因此也会显示。也许你可以打电话给"完成()"在startActivity(dialogActivity)之后的A中,以确保A完成并消失。