Android 重新启动一个应用程序会从我关闭它的地方开始,而不是从一开始

Android 重新启动一个应用程序会从我关闭它的地方开始,而不是从一开始,android,application-restart,Android,Application Restart,我想,当我退出设备上的应用程序,而它在taskmanager中不再可见时,当我再次启动时,应用程序将从一开始就重新启动 但由于某些原因,我的应用程序保留了上一次运行时的一些变量,因此无法真正正确地重新启动 只有在设备本身上重新启动时才会发生这种情况。使用Eclipse重新启动可以从初始化所有变量的一开始就正确启动应用程序 为什么会这样?当退出应用程序时,所有类和变量都将被销毁,我的假设是错误的吗 非常感谢嗯,事情比这更复杂 首先,在调试器中运行Android应用程序时,您不会看到正常的Andro

我想,当我退出设备上的应用程序,而它在taskmanager中不再可见时,当我再次启动时,应用程序将从一开始就重新启动

但由于某些原因,我的应用程序保留了上一次运行时的一些变量,因此无法真正正确地重新启动

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

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


非常感谢

嗯,事情比这更复杂

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


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

嗯,这比这更复杂

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


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

您所说的“关闭”或“退出”是什么意思?你的意思是离开活动后?无法发布我的完整应用程序代码。应用程序已完全关闭-至少它在taskmanager中不可见。这里讨论了一个类似的问题,感谢Marc Van Daele的参考-了解到应用程序活动并没有真正被杀死,这真是令人惊讶!这对开发应用程序意味着什么?我真的必须假设所有的活动都可能保留下来,还是只有某些活动?难道没有办法真正摧毁它们,让它们从一开始就消失并被创造出来吗?你所说的“关闭”或“退出”是什么意思?你的意思是离开活动后?无法发布我的完整应用程序代码。应用程序已完全关闭-至少它在taskmanager中不可见。这里讨论了一个类似的问题,感谢Marc Van Daele的参考-了解到应用程序活动并没有真正被杀死,这真是令人惊讶!这对开发应用程序意味着什么?我真的必须假设所有的活动都可能保留下来,还是只有某些活动?难道没有办法真正摧毁它们,让它们从一开始就消失并被创造出来吗?首先,非常感谢你的详细解释。哦,好吧,这让一切变得非常复杂。是否有更详细的参考说明以及如何处理?我真的需要更多地了解这一点!好的,从JavaDoc页面开始。它有大量关于活动生命周期的信息。值得注意的是,请阅读解释活动的“可终止”状态和“活动生命周期”的部分。关于“活动生命周期”,请阅读#3,它描述了我对背景活动所做的工作。你的贝丝