我正在为一个安卓应用程序的C2DM通知工作,我想打开我的应用程序时,用户点击通知。这是没有问题的,这很简单。问题是,当应用程序启动时(在单击通知之后),如果之前打开了某个活动,则启动的活动似乎被添加到实际的活动堆栈中,这是关于我的应用程序的复杂性的问题(有很多活动,其中一些具有静态字段)。
要解决这个问题,有两个解决方案是可以的:
1)不要调用特定的活动,而只是请求打开我的应用程序(就像我单击主屏幕上的应用程序图标时一样:如果应用程序已关闭,则打开第一个活动;如果应用程序已打开(但在后台),则仅将应用程序带到前台)。
2)清空所有的activity堆栈,启动特定的activity。
但我没有成功地完成这两个解决方案中的一个。甚至使用意图标志(如http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP)。
有人能帮我解决这个问题吗?
谢谢
附言:对不起,我的英语很差,我来自比利时:-)
发布于 2011-12-14 22:50:01
这不是您要求做的事情,但是您可以将属性android:launchMode="singleTask"添加到您将从该通知中调用的活动中,并且如果此实例已经存在,它将不会创建新的活动。
您也可以使用ActivityManager.killBackgroundProcesses(String packageName)来删除后台进程,但我从未尝试过,也不建议您使用ChriZzZ建议,并更严格地管理您的活动。
发布于 2011-12-14 22:44:52
听起来像是在搜索FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
如果设置,这将标记任务的活动堆栈中的一个点,该点应在重置任务时清除。也就是说,下次使用FLAG_ACTIVITY_RESET_TASK_IF_NEEDED将任务带到前台时(通常是用户从家里重新启动它的结果)
https://stackoverflow.com/questions/8505977
复制相似问题