首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在启动有意图的活动之前清除活动堆栈

在启动有意图的活动之前清除活动堆栈
EN

Stack Overflow用户
提问于 2011-12-14 22:20:37
回答 2查看 1.1K关注 0票数 2

我正在为一个安卓应用程序的C2DM通知工作,我想打开我的应用程序时,用户点击通知。这是没有问题的,这很简单。问题是,当应用程序启动时(在单击通知之后),如果之前打开了某个活动,则启动的活动似乎被添加到实际的活动堆栈中,这是关于我的应用程序的复杂性的问题(有很多活动,其中一些具有静态字段)。

要解决这个问题,有两个解决方案是可以的:

1)不要调用特定的活动,而只是请求打开我的应用程序(就像我单击主屏幕上的应用程序图标时一样:如果应用程序已关闭,则打开第一个活动;如果应用程序已打开(但在后台),则仅将应用程序带到前台)。

2)清空所有的activity堆栈,启动特定的activity。

但我没有成功地完成这两个解决方案中的一个。甚至使用意图标志(如http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP)。

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

谢谢

附言:对不起,我的英语很差,我来自比利时:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-14 22:50:01

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

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

票数 1
EN

Stack Overflow用户

发布于 2011-12-14 22:44:52

听起来像是在搜索FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8505977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档