【发布时间】:2011-10-13 07:00:32
【问题描述】:
我想保存应用程序状态,以便能够在再次启动后恢复它。是使用方法 onSaveInstanceState 并将其保存到 Bundle 还是使用 SharedPreferences 更好?
谢谢
【问题讨论】:
标签: android bundle sharedpreferences
我想保存应用程序状态,以便能够在再次启动后恢复它。是使用方法 onSaveInstanceState 并将其保存到 Bundle 还是使用 SharedPreferences 更好?
谢谢
【问题讨论】:
标签: android bundle sharedpreferences
这取决于你的意图。如果您想确保在配置更改和其他重启事件期间保存状态,则使用onSaveInstanceState() 只是一个合理的解决方案。如果您的目标是在应用程序的生命周期之外真正保存应用程序的状态,您应该考虑使用 SharedPreferences 或者甚至使用数据库。
【讨论】:
onSaveInstanceState() 是不够的。
我可能没有与这里的其他一些海报相同的开发印记(自 2012 年 7 月以来,我一直在认真开发应用程序),但我找到了一个集成 SharedPreferences 和 onSaveInstanceState() 的解决方案。
我的应用程序有一个启动屏幕活动,它从 SharedPreferences 读取值并将它们分配给适当的变量。此外,我创建的每个 Activity 都有其自己的 onSaveInstanceState() 方法,并且我将需要保存的所有数据提交到每个 Activity 中的 SharedPreferences。由于 onSaveInstanceState() 是在 App 或 Activity 正常关闭之前运行的,因此在所有正常情况下它都应该备份数据值。
它可能不是代码效率最高的解决方案,尤其是在具有许多活动的大型应用中,但就我的测试而言,它可以在 99% 的情况下保护您的应用免受数据丢失。
如果更有经验的开发者愿意加入并确认或否认这一点,我相信它会丰富问题和答案。
【讨论】:
onSaveInstanceState 在 App 或 Activity 正常关闭之前不会运行。它在应用程序或活动被系统关闭之前运行(例如方向变化、内存不足、进入后台)。未调用的一种重要情况是用户通过按后退按钮退出 Activity
我确信 onSaveInstanceState() 是更好的选择。
这里已经给出了更好的解释:Saving Android Activity state using Save Instance State
【讨论】: