2011-10-13 109 views
6

我想要保存应用程序状态以便能够在另一次启动后进行恢复。使用onSaveInstanceState方法并将其保存到Bundle或使用SharedPreferences更好吗?Android - 保存应用程序状态

感谢

回答

8

这取决于你的意图。如果要确保在配置更改和其他重新启动事件期间保存状态,则仅使用onSaveInstanceState()是合理的解决方案。如果您的目标是在应用程序的生命周期之外真正保存应用程序的状态,则应考虑使用SharedPreferences或者甚至可以使用数据库。

+0

是的,我需要能够恢复状态的应用程序,重新启动后发生。所以onSaveInstanceState()将是最好的解决方案 – Waypoint

+0

如果应用程序实际上被系统关闭,保存的实例状态将会丢失。关闭设备本身也是一样。如果你想在这些情况下保留状态,'onSaveInstanceState()'是不够的。 –

+0

哦,谢谢,所以SharedPreferences是目标 – Waypoint

1

我可能不会有相同的开发印章一些其他海报的位置(我一直在认真地开发应用程序自2012年7月),但我找到了一个集成SharedPreferences以及onSaveInstanceState()的解决方案。

我的App有闪屏的活动,从SharedPreferences读取值,并将其分配给相应的变量。此外,我制作的每个活动都有自己的onSaveInstanceState()方法,并且在每个活动中将所有需要保存的数据提交到SharedPreferences。由于onSaveInstanceState()在App或Activity正常关闭前运行,因此它应该在所有正常情况下备份数据值。

它可能不是最代码效益的解决方案,尤其是在许多活动大型应用程式,但据我的测试中去它保护你的应用程序数据丢失的99%的时间。

如果一个有经验的开发人员想插话,并确认或否认这一点,我相信它会充实问题和答案。

+0

我知道这是旧的,但对于未来的读者:'onSaveInstanceState'不会在App或Activity正常关闭之前运行。它在系统关闭App或Activity之前运行(例如,方向更改,内存不足,进入后台)。未调用时的一个重要情况是用户通过按下后退按钮退出活动 – bcorso