【问题标题】:Android reuse activity from activity stack and clear itAndroid重用活动堆栈中的活动并将其清除
【发布时间】:2012-06-01 16:01:09
【问题描述】:

我有主要活动的应用程序等等。 在每个其他活动上都有应用程序的徽标。 当用户按下徽标按钮时,我想回到主要活动。

我不想创建新的意图,因为活动堆栈上的活动区域。

我怎样才能得到它 - 使用堆栈上的那个? 如何清除整个活动堆栈,以便返回按钮实际上会从应用程序中退出,而不是返回到上一个活动?

约夫

【问题讨论】:

  • 您需要尝试从 Android 文档中了解 Activity LifeCycle 并查看 finish() 函数。

标签: android android-activity


【解决方案1】:

我不想创建新的意图,因为活动堆栈上的活动区域。

如果您启动一个已经启动并位于堆栈上的活动(通过意图或任何其他方式),那么 Android 只会获取该活动的相同实例并将其放在堆栈顶部。未创建新实例。当然,如果您没有手动终止活动(通过在其中调用 finish()),就会发生这种情况。

我怎样才能清除整个活动堆栈,所以后退按钮实际上会从应用程序中退出而不是返回到上一个活动?

不建议在每个活动中覆盖后退按钮以退出应用程序(除非您的应用程序有充分的理由这样做)。通常,当用户按下后退按钮时,应用程序应该让用户回到上一个活动(这是用户可能期望的)。
如果您仍然想使用返回按钮退出,那么您可以覆盖返回按钮功能并启动通向主屏幕的意图:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。以下链接可能对您有所帮助:

    clearing stack of activities with just one press

    【讨论】:

      【解决方案3】:

      它非常简单。 不要在 Home/Main 活动上调用 finish()。 例如:假设您有 4 个活动。如果您的要求是这样的 .. Act1-->Act2-->Act3-->Act4-->Act1 。所以,不要在 Act1 上调用 finish()。但是在您进行其他活动时,请在 Act2、Act3 上调用 finish()。所以当你点击Act4中的logo时,只需调用finish()。因此,您将自动返回到 Act1,这是您的主要活动。
      如果您在 Act2 中有徽标,Act3 也会在单击徽标时调用 finish() 以返回到 Main。但记得在从 Act2 转到 Act3 时在 Act2 上调用 finish()

      【讨论】:

        猜你喜欢
        • 2011-10-27
        • 1970-01-01
        • 2012-09-19
        • 2011-09-19
        • 2013-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        相关资源
        最近更新 更多