清除活动堆栈
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状态改变了以上是关于清除活动堆栈的主要内容,如果未能解决你的问题,请参考以下文章