Java Android应用程序-保存状态

Java Android应用程序-保存状态,java,android,eclipse,android-activity,Java,Android,Eclipse,Android Activity,我有自己的应用程序类对象,在其中存储所有应用程序数据。在Application.onCreate中,我创建所有应用程序对象并从SharedReferences读取数据。我的问题是,当应用程序进入后台时,它可能会被杀死。在我从launcher中选择应用程序后,活动堆栈将恢复(最后一个活动将启动,而不是launcher活动)。问题是Application.onCreate没有被调用,因此没有加载所有的应用程序对象,我遇到了麻烦。存储/恢复应用程序数据/对象的最佳方式是什么。我知道这可以在Activi

我有自己的应用程序类对象,在其中存储所有应用程序数据。在Application.onCreate中,我创建所有应用程序对象并从SharedReferences读取数据。我的问题是,当应用程序进入后台时,它可能会被杀死。在我从launcher中选择应用程序后,活动堆栈将恢复(最后一个活动将启动,而不是launcher活动)。问题是Application.onCreate没有被调用,因此没有加载所有的应用程序对象,我遇到了麻烦。存储/恢复应用程序数据/对象的最佳方式是什么。我知道这可以在Activities.onCreate/onDestroy中完成,但我的应用程序中有许多活动,不知道在应用程序终止/重新启动时,哪些活动将位于最上面。

序列化应用程序对象并将其存储到文件(简单)或对象存储(复杂)中

或者可以实现序列化/反序列化功能

其中,Serialize将对象属性转换为JSON并存储


反序列化将加载JSON并填充对象并返回。

序列化应用程序对象并将其存储到文件(简单)或对象存储(复杂)

或者可以实现序列化/反序列化功能

其中,Serialize将对象属性转换为JSON并存储


反序列化将加载JSON并填充对象并返回。

当您启动应用程序时,它从最后一个活动开始,而不是从启动器活动开始,这意味着您的应用程序尚未被终止。因此,在本例中,将不会调用应用程序的onCreate方法,因为它仍然处于活动状态

应用程序的onCreate方法在应用程序的生命周期中调用一次。因此,在应用程序类处于活动状态之前,您应该可以访问所有应用程序数据

如果您需要测试,当您的应用程序被终止时会发生什么情况,因此您应该转到“应用程序管理器”并手动终止该应用程序

编辑:
如果您的应用程序处于活动状态,只要您的应用程序具有对数据的引用,它们就不能被gc删除。因此,在您的情况下,可能您忘记了正确更新数据。因此,序列化在这种情况下对您没有帮助,否则您将有bug。

当您启动应用程序时,它从上一个活动开始,而不是从启动程序活动开始,这意味着您的应用程序尚未被终止。因此,在本例中,将不会调用应用程序的onCreate方法,因为它仍然处于活动状态

应用程序的onCreate方法在应用程序的生命周期中调用一次。因此,在应用程序类处于活动状态之前,您应该可以访问所有应用程序数据

如果您需要测试,当您的应用程序被终止时会发生什么情况,因此您应该转到“应用程序管理器”并手动终止该应用程序

编辑:
如果您的应用程序处于活动状态,只要您的应用程序具有对数据的引用,它们就不能被gc删除。因此,在您的情况下,可能您忘记了正确更新数据。因此,序列化在这种情况下对您没有帮助,否则您将有bug。

正如TechExchange所建议的,要保存对象状态,您必须实现序列化接口,但何时存储应用程序对象的状态?什么时候处理它?可能是在卸载应用程序时您想要存储,而在应用程序加载时,如果某个状态已经是记录器,您可能想要恢复。有意义吗?正如TechExchange所建议的,要保存对象状态,必须实现序列化接口但何时存储应用程序对象的状态?什么时候处理它?可能是在卸载应用程序时您想要存储,而在应用程序加载时,如果某个状态已经是记录器,您可能想要恢复。有道理吗?