同时关闭几个android活动

时间:2010-03-17 11:56:32

标签: android

在我的应用程序中,您可以浏览多个活动,直到活动堆栈非常深。

我们希望每个活动上都有一个按钮,可以直接返回主菜单 - 即从第一个活动中弹出所有活动。

我已将按钮放在View中,我可以轻松地将其放在应用程序中的每个Activity上,但我无法弄清楚如何一举关闭几个活动。

(如果可能的话,如果View可以计算出自己关闭多少个活动,那就好了 - 也就是检测它自己的Activity有多深。)

2 个答案:

答案 0 :(得分:16)

查看意图标记FLAG_ACTIVITY_CLEAR_TOP,它表示它将目标活动带到堆栈顶部,删除其上可能存在的所有其他内容。因此,使用您可以添加到所有活动的按钮来启动针对主菜单的意图,并设置该标记。

来自文档:

  

如果设置,则活动正在进行   推出已经在运行了   当前任务,然后而不是   启动一个新的实例   活动,所有其他活动   它将被关闭   意图将交付给(现在   在顶部)旧活动作为一个新的意图。

     

例如,考虑一项任务   由以下活动组成:A,B,C,   D.如果D用一个调用startActivity()   解析为组件的意图   活动B,那么C和D将是   完成后,B收到给定的   意图,现在导致堆栈   存在:A,B。

     

当前正在运行的实例   上例中的活动B将会   要么接受你的新意图   从这里开始onNewIntent()   方法,或自己完成和   用新意图重新启动。如果它   已宣布其发射模式为   “多个”(默认),你有   没有设置FLAG_ACTIVITY_SINGLE_TOP   同样的意图,那就是   完成并重新创建;为了所有其他   发射模式或如果   然后设置FLAG_ACTIVITY_SINGLE_TOP   这个意图将被传递给   当前实例的onNewIntent()。

     

此启动模式也可用于   结合良好的效果   FLAG_ACTIVITY_NEW_TASK:如果习惯的话   它启动任务的根活动   会带来任何正在运行的   该任务的实例   前景,然后清除它   根状态。这特别有用,   例如,启动时   来自通知的活动   管理器。

答案 1 :(得分:-1)

您可以声明第一个活动android:launchMode="singleTask"more),然后以意图启动它。

编辑:我的建议是基于您希望将单个Activity实例返回的假设。否则它是不正确的。