我最近进入了Android开发阶段,我对savedInstanceState的工作方式感到有些困惑。让我们说我正在制作游戏,我想保存玩家的分数,我是否可以在onSavedInstanceState()
期间将其保存到savedInstanceState Bundle并始终能够从中检索分数无论设备是关闭还是用户完全关闭应用程序?
答案 0 :(得分:0)
我不确定我是否完全理解你,但让我回答你然后告诉我这是不是你的意思
savedInstanceState与保存游戏无关,保存游戏通常应该是在发生cretin事件时或者有时你选择那个
如果用户通过按下主页按钮关闭游戏,例如你将自动为他保存游戏,你应该通过覆盖其中一个Activity方法来实现,onPause()是你最好的选择,因为你想保持例如,即使用户重新启动手机也会保存。
请参阅此活动生命周期: http://developer.android.com/training/basics/activity-lifecycle/index.html
另一方面,savedInstanceState是android用于临时保存活动的机制,如果用户在活动完全被操作系统杀死之前直接返回游戏,则可以恢复活动状态而不是从头开始加载游戏并进入开始菜单。
这个原则通常不只是在游戏中。
总结一下:savedInstanceState是一种在内存被杀之前从内存恢复活动而不是再次加载它的方法。并且它不是一种在设备上预先保存数据的方法
如果这是您想要的,那么您可以询问如何使用savedInstanceState
答案 1 :(得分:0)
如果你的问题是在记忆中保存了多少Bundle对象,那就是暂时的。
数据保存在内存中,直到应用程序处于活动状态或被操作系统杀死(内存不足),换句话说,如果您强制关闭应用程序(关闭设备或关闭应用程序),则不使用onSaveInstanceState。 / p>
但是,如果要永久存储数据,则必须使用SharedPreferences和SQLite数据库。