繁体   English   中英

在有目的的情况下启动活动之前,请清除活动堆栈

[英]Clear the activity stack before launching activity with intent

我正在处理Android应用程序的C2DM通知,当用户单击通知时,我想打开我的应用程序。 这样做没有问题,这很容易。 问题在于,当应用程序启动时(单击通知后),如果先前已打开某些活动,则启动的活动似乎已添加到实际的活动堆栈中,这与我的应用程序的复杂性有关(存在是很多活动,其中一些活动包含静态字段)。

要解决该问题,可以采用以下两种解决方案:

1)不要调用特定活动,而只是要求打开我的应用程序(例如,当我单击主屏幕上的应用程序图标时:如果应用程序已关闭,则打开第一个活动;如果已打开,则将其置于最前面(但在后台)。

2)清除所有活动堆栈并启动特定活动。

但是我没有成功做这两种解决方案之一。 即使使用意图标志(例如http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP )。

有人可以帮我解决这个问题吗?

谢谢

PS:对不起,我的英语不好,我来自比利时:-)

这不是您要执行的操作,但是您可以将属性android:launchMode="singleTask"到要从此通知中调用的活动中,并且如果此实例已经存在,则不会创建新活动。

您可能还可以使用ActivityManager.killBackgroundProcesses(String packageName)删除后台进程,但是我从未尝试过这样做,因此不建议这样做,也可以使用ChriZzZ建议并更加严格地管理您的活动。

听起来好像您在搜索FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

如果设置,则标记任务活动堆栈中的一个点,该点在重置任务时应清除。 也就是说,下次使用FLAG_ACTIVITY_RESET_TASK_IF_NEEDED将任务带到前台(通常是由于用户从家中重新启动它)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM