Android-保存应用程序状态

Android-保存应用程序状态,android,bundle,sharedpreferences,Android,Bundle,Sharedpreferences,我想保存应用程序状态,以便在另一次启动后能够恢复它。使用saveInstanceState方法并将其保存到Bundle还是使用SharedReferences更好 谢谢这取决于你的意图。如果要确保在配置更改和其他重新启动事件期间保存状态,则使用onSaveInstanceState()是唯一合理的解决方案。如果您希望在应用程序的生命周期之外真正地保存应用程序的状态,则应该考虑使用SysDouPype,或者甚至使用数据库。p> 我确信onSaveInstanceState()是更好的选择 这里已经

我想保存应用程序状态,以便在另一次启动后能够恢复它。使用saveInstanceState方法并将其保存到Bundle还是使用SharedReferences更好


谢谢

这取决于你的意图。如果要确保在配置更改和其他重新启动事件期间保存状态,则使用
onSaveInstanceState()
是唯一合理的解决方案。如果您希望在应用程序的生命周期之外真正地保存应用程序的状态,则应该考虑使用SysDouPype,或者甚至使用数据库。p> 我确信onSaveInstanceState()是更好的选择


这里已经给出了一个更好的解释:

我可能没有与这里其他一些海报相同的开发技能(我从2012年7月开始认真开发应用程序),但我找到了一个集成SharedReferences和onSaveInstanceState()的解决方案

我的应用程序有一个启动屏幕活动,从SharedReferences读取值并将其分配给相应的变量。此外,我创建的每个活动都有自己的onSaveInstanceState()方法,并且我在每个活动中提交了需要保存到SharedReferences的所有数据。由于onSaveInstanceState()是在应用程序或活动正常关闭之前运行的,因此它应该在所有正常情况下备份数据值

它可能不是代码效率最高的解决方案,尤其是在有许多活动的大型应用程序中,但就我的测试而言,它可以在99%的时间内保护您的应用程序不丢失数据


如果更有经验的开发人员想插话确认或否认这一点,我相信这将丰富问题和答案。

是的,我需要能够在重新启动后恢复应用程序状态。因此onSaveInstanceState()将是最好的解决方案。如果应用程序实际被系统关闭,则保存的实例状态将丢失。关闭设备本身也是如此。如果您还想在这些情况下保留状态,
onSaveInstanceState()
是不够的。@TillHelge实际上,saveInstanceState专门用于处理应用程序被系统关闭的情况(例如,由于内存不足),每当重新创建活动时,savedInstanceState将传递给onCreate方法。只有当用户完成活动或操作系统重新启动时,状态才会被恢复。@bcorso这些状态存储在哪里?用户是否可以在系统不执行操作的情况下手动保存并恢复这些状态(或者在重新启动的情况下,不执行这些操作)?我知道这很旧,但对于未来的读者来说:
onSaveInstanceState
在应用程序或活动正常关闭之前不会运行。它在应用程序或活动被系统关闭之前运行(例如方向更改、内存不足、转到后台)。未调用它的一个重要情况是,用户通过按后退按钮退出活动