我有主要活动和更多的应用程序。 在彼此的活动有应用程序的标志。 当用户按下标志按钮时,我想回到主要活动。从活动堆栈中重新使用Android活动并清除它
我不想创建新的意图,因为活动堆栈上的活动已经结束。
我怎样才能得到它 - 使用堆栈中的一个? 如何清除整个活动堆栈,所以后退按钮实际上会退出应用程序而不是回到以前的活动?
Yoav
我有主要活动和更多的应用程序。 在彼此的活动有应用程序的标志。 当用户按下标志按钮时,我想回到主要活动。从活动堆栈中重新使用Android活动并清除它
我不想创建新的意图,因为活动堆栈上的活动已经结束。
我怎样才能得到它 - 使用堆栈中的一个? 如何清除整个活动堆栈,所以后退按钮实际上会退出应用程序而不是回到以前的活动?
Yoav
我遇到了一个类似的问题。下面的链接可能对您有所帮助:
我不希望创建新的意图,因为AREADY上的活动堆栈活动。
如果您启动了一个已经启动且位于堆栈上的活动(即通过意图或任何其他方式),那么Android只会将该活动的相同实例放置在堆栈顶部。一个新的实例不会被创建。当然,如果你没有手动杀死这个活动(通过调用finish()
),就会发生这种情况。
如何清除整个活动堆栈,所以后退按钮实际上会退出应用程序而不是回到以前的活动?
它不建议覆盖后退按钮退出每个活动中的应用程序(除非你的应用程序有强烈的理由这样做)。通常应用程序应该让用户在按下后退按钮时回到之前的活动状态(这是用户可能期望的)。
如果您仍想与返回键退出,那么你可以重写后退按钮功能,启动通向主屏幕的意图:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
它非常简单。 不要在主页/主要活动中调用finish()。 例如:假设您有4项活动..如果您的要求是这样的话。Act1 - > Act2 - > Act3 - > Act4 - > Act1。所以,不要在Act1上调用finish()。但是当您正在进行其他活动时,请在Act2 Act3上致电完成()。所以当你点击Act4中的标志时,只需调用finish()。所以,你会自动回到Act1这是你的主要活动。
如果您在Act2中有标识,则Act3也会在标识点击后返回Main以调用finish()。但是记得在从Act2到Act3时调用Act2上的finish()
您需要尝试理解Android文档中的Activity Activity LifeCycle并查看finish()函数。 –