1

我想当我退出设备上的应用程序并且它在任务管理器中不再可见时,当我再次启动它时,应用程序将从头开始重新启动。

但是由于某种原因,我的应用程序保留了上次运行的一些变量,并且没有真正正确地重新启动。

仅当在设备本身上重新启动时才会发生这种情况。使用 Eclipse 重新启动从一开始就正确启动应用程序,初始化所有变量。

为什么是这样?我的假设是否错误,即退出应用程序时所有类和变量都会被破坏?

非常感谢

4

1 回答 1

1

嗯,它比这更复杂。

首先,当您在调试器中运行它时,您不会看到正常的 Android 应用程序生命周期。杀死并重新启动应用程序确实会从头开始。但是,正常的 Android 应用程序生命周期对开发人员来说并不是很直观。通常,如果用户将应用程序“退回”到 Android 主屏幕,那么一旦没有活动活动,人们会期望您的应用程序被杀死。不是这种情况。Android OS 将让您的应用程序在内存中保持活动状态,直到内存压力导致它释放应用程序。这样做是因为如果用户再次“打开”应用程序,它的启动速度会快得多。我要指出的是,您的应用程序的 onDestroy() 方法实际上永远不会被杀死,因为这也让一些开发人员感到惊讶。

但是,如果您仍然有活动活动,但它们在后台,并且 Android 需要内存,它会杀死您的活动,但会在这样做之前调用 onSaveInstanceState。这将使您的 Activity 有机会将其状态保存在 Bundle 中,事实上,大部分操作将由默认实现为您完成。此时,如果您的所有活动都被杀死,您的应用程序将被杀死,但 Android 仍将保持已保存状态,从用户的角度来看,应用程序仍处于活动状态(它仍会显示在列表中活跃的应用程序)。当用户返回应用程序时,Android 将重新构造最顶层的 Activity(将调用 onCreate,但使用包含使用 onSaveInstanceState 保存的内容的 Bundle)并将其显示给用户。

于 2011-12-08T17:59:09.110 回答