2011-12-14 137 views
2

我正在研究Android应用程序的C2DM通知,并且希望在用户单击通知时打开我的应用程序。这没有问题,这很容易。 问题是,当应用程序启动时(点击通知后),如果某些活动先前已打开,启动的活动似乎已添加到实际活动堆栈中,那么与我的应用程序的复杂性有关的问题是什么有很多活动,一些有静态字段)。在意图发起活动之前清除活动堆栈

为了解决这个问题,2个解决方案将是美好的:

1)不要调用特定的活动,但只是问到我的应用程序打开(比如当我点击主屏幕上的应用程序图标:打开如果应用程序已关闭,或者只是在应用程序打开(但在后台)时才将应用程序置于前面,则为第一个活动)。

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

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

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

感谢

PS:对不起,我的英文不好,我来自Belgium :-)

回答

1

这不是你要求做的,但你可以添加属性android:launchMode="singleTask"到您将从此通知中调出的活动,并且如果此实例已存在,则不会创建新活动。

您也可以使用ActivityManager.killBackgroundProcesses(String packageName)删除后台进程,但我从来没有尝试过这一点,它不建议或使用ChriZzZ建议,并管理你的活动有点紧。

+0

android:launchMode =“singleTask”似乎解决了我的问题。非常感谢你 – ValentinTaleb 2011-12-14 16:29:54

0

听起来像是你正在寻找FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

如果设置,这标志着一个点该任务的活动堆栈应在任务重置时清除。也就是说,下一次任务带到前台与FLAG_ACTIVITY_RESET_TASK_IF_NEEDED(从家里通常作为用户的结果重新启动它)