【问题标题】:How to reset all activities and launch a new one?如何重置所有活动并启动新活动?
【发布时间】:2011-05-05 18:48:09
【问题描述】:

我有一个应用程序,我想以这种方式导航:

A -> B -> C

然后从 C 启动一个名为 D 的新活动,它会转到顶部并清除任务,这意味着如果我按回 D 它将转到主屏幕。

如果我理解正确的话,这个 FLAG: FLAG_ACTIVITY_TASK_ON_HOME 会这样做......但它只在当前的 API (11>) 上。

我正在为 Android 1.5 开发>我怎么也有这种行为?

谢谢!

【问题讨论】:

    标签: android


    【解决方案1】:

    你正在寻找这个:

    Intent intent = new Intent(activity, activityClass);
    ComponentName cn = intent.getComponent();
    Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
    activity.startActivity(mainIntent);
    

    使用来自 google 的 android 兼容性库 - 在 sdk 中找到。

    或使用finish()

    【讨论】:

      【解决方案2】:

      您可以将FLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_NEW_TASK 一起使用。

      public static final int FLAG_ACTIVITY_CLEAR_TASK

      自:API 级别 11

      如果在传递给 Context.startActivity() 的 Intent 中设置,此标志将 导致与活动相关联的任何现有任务 在活动开始之前被清除。也就是活动 成为其他空任务的新根,并且任何旧的 活动结束。这只能与 FLAG_ACTIVITY_NEW_TASK。

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

      【讨论】:

        【解决方案3】:

        我最终使用了这个 https://*.com/a/8576529/327011,因为我需要从 1.5 开始使用它 > 并且该标志仅在更高的 API 上可用。

        如果我不需要支持“低”API 级别,那么@aromero 的答案将是我的选择。

        【讨论】:

        • 由于这个答案已经过时,我接受了@A。 Binzxxxxxx 是最新的(但还没有尝试过他的代码)。