清除活动堆栈

Posted

技术标签:

【中文标题】清除活动堆栈【英文标题】:Clearing Activity Stack 【发布时间】:2011-09-19 15:23:00 【问题描述】:

我在清除应用程序的活动堆栈时遇到问题。在我的应用程序开始时,我让用户登录并给他们一个会话 ID。登录后,他们可以继续使用该应用程序。但是,如果会话过期,我想将它们重定向到登录活动并清除活动历史记录,以便他们无法访问该应用程序。我查看了 android API,Intent 标志 FLAG_ACTIVITY_CLEAR_TASK 似乎是我想要的,但它只是包含在 API 级别 11 中,还没有手机具有新的操作系统。有没有人有这个问题的解决方案。谢谢。

【问题讨论】:

【参考方案1】:

我找到了我的答案here。事实证明,我必须广播一个意图来告诉所有活动调用方法finish()

【讨论】:

【参考方案2】:

FLAG_ACTIVITY_CLEAR_TOP 的文档描述了与FLAG_ACTIVITY_NEW_TASK 结合使用时所需的情况

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

"这种启动模式也可以和FLAG_ACTIVITY_NEW_TASK配合使用效果很好:如果用来启动一个任务的根Activity,它将把该任务当前正在运行的任何实例带到前台,然后将其清空到它的前台。 root 状态。这特别有用,例如,在从通知管理器启动 Activity 时。"

【讨论】:

我试过“i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);”当我点击后退按钮时,它仍然会回到上一个活动 user intent.setFlags(FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_NEW_TASK) 为了清除之前的所有活动,另外在调用startActivity(intent)之后,调用finish()和你想隐藏的login\mainActivity状态改变了

以上是关于清除活动堆栈的主要内容,如果未能解决你的问题,请参考以下文章

Android:清除活动堆栈

从堆栈中清除后台活动/活动的正确方法是什么?

清除堆栈活动并完成[重复]

清除整个历史堆栈并在 Android 上启动一个新活动

如何清除背压事件的活动堆栈跟踪?

Android:从历史堆栈中清除旧的活动实例