Android从活动堆栈重用活动并清除它

时间:2012-05-26 09:32:00

标签: android android-activity

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

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

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

约阿夫

3 个答案:

答案 0 :(得分:3)

  

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

如果你开始一个已经启动并且在堆栈上的活动(通过意图或任何其他方式),那么Android就会采用相同的活动实例并将其置于堆栈顶部。未创建新实例。当然,如果您没有手动杀死活动(通过调用其中的finish()),就会发生这种情况。

  

如何清除整个活动堆栈,以便后退按钮实际上会从应用程序退出而不是回到之前的活动?

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

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

答案 1 :(得分:0)

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

clearing stack of activities with just one press

答案 2 :(得分:0)

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

时,记得在Act2上调用finish()
相关问题