如何使用后退按钮阻止多个Activity实例?

时间:2013-03-25 15:33:03

标签: android android-activity

我有一个Activity的示例应用。我希望用户能够使用后退按钮离开应用程序,稍后通过应用程序的图标进行租借,而不创建Activity的新实例。

问题是,如果我按下后退按钮并重试n次,那么我最终会得到应用程序的n个实例(如内存分析工具中所示)。

我已尝试覆盖onBackPressed()来致电finish()。在这种情况下,我可以看到onDestroy()被调用,但它仍然在内存中留下Activity的多个实例。我还尝试了不同的android:launchMode,包括"singleTop""singleTask""singleInstance",但在所有情况下,仍有多个{{1}个实例我的班级。

如何在这种简单的情况下阻止Activity的多个实例运行?

1 个答案:

答案 0 :(得分:0)

单击后退按钮时,您的活动将被销毁。很自然,每次重点关注时都会重新创建活动。这是它的工作原理。

当屏幕方向改变时,活动也会被破坏并重新创建。

http://developer.android.com/training/basics/activity-lifecycle/index.html。完成活动生命周期。

http://developer.android.com/guide/components/tasks-and-back-stack.html.The文档让您了解当用户单击后退按钮和主页按钮时如何从后台堆栈中推送和弹出活动。

假设你开始一个新的活动,它会被推到后面的堆栈,它会成为焦点。

当当前活动开始另一个活动时,新活动将被推到堆栈顶部并获得焦点。之前的活动仍在堆栈中,但已停止。

单击后退按钮时,当前活动将从堆栈中弹出并被销毁。 因此,后备堆栈中的先前活动需要重点关注。

注意:可以在后台同时保存多个任务。但是,如果用户同时运行许多后台任务,系统可能会开始销毁后台活动以恢复内存,从而导致活动状态丢失。请参阅以下有关活动状态的部分。