3

我有一个带有Activity. 我希望用户能够使用后退按钮离开应用程序,稍后通过应用程序的图标进行租用,而无需创建Activity.

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

我试过覆盖onBackPressed()调用finish()。在这种情况下,我可以看到它被调用了,但它仍然在内存中onDestroy()留下了多个实例。Activity我也尝试了不同android:launchMode的 's,包括"singleTop""singleTask""singleInstance",但在所有情况下仍然有Activity's 类的多个实例。

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

4

1 回答 1

0

当您单击后退按钮时,您的活动将被破坏。每次获得焦点时都会重新创建活动,这是很自然的。这就是它的工作原理。

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

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

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

假设你开始一个新的活动,它被推到后台堆栈并获得焦点。

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

当您单击后退按钮时,当前活动将从堆栈中弹出并被销毁。因此,后堆栈中的先前活动成为焦点。

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

于 2013-03-25T15:45:32.233 回答