重新启动应用程序会在我关闭的地方启动 - 而不是从一开始

时间:2011-12-08 17:43:07

标签: android application-restart

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

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

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

这是为什么?我的假设是错误的,当退出应用程序时,所有类和变量都将被销毁?

非常感谢

1 个答案:

答案 0 :(得分:1)

嗯,这比那更复杂。

首先,当您在调试器中运行它时,您将看不到正常的Android应用程序生命周期。杀死并重新启动应用程序确实会从一开始就启动。不过,正常的Android应用生命周期对开发人员来说并不是非常直观。通常情况下,如果用户将应用程序“退出”到Android主屏幕,则可能会在没有活动活动时将您的应用程序杀死。不是这种情况。 Android操作系统将让你的应用程序保持活着,直到内存压力导致它释放应用程序。这样做是因为如果用户再次“打开”应用程序,它将启动更快,更快。我会指出你的应用程序的onDestroy()方法实际上永远不会被杀死,因为这也让一些开发人员感到惊讶。

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

相关问题