在Android中保存游戏状态的最有效方法是什么?

时间:2012-11-26 02:43:51

标签: android

我有一个游戏应用程序,可以在游戏板活动的onPause()函数中保存游戏状态。

这似乎非常浪费,因为用户可能会短暂切换到另一个应用程序并稍后返回播放。但如果他们永远不会返回,我的应用程序可能会被垃圾收集并且状态会丢失,所以我保存它以防万一。

我认为状态会在每次读取时多次保存。当我知道他们离开应用程序时,是否有更好的方法来懒惰地保存状态?

有人知道我可以使用的保证回调吗?例如如果我将保存状态代码移动到onDestroy(),它可能永远不会被调用。

有没有办法利用onSaveInstanceState()来提供帮助?

由于

1 个答案:

答案 0 :(得分:1)

当用户切换方向和用户导航时,会调用onPause()。这两个操作都有可能导致数据丢失,因此无论你正在做什么(无论是游戏还是应用程序),保存onPause()都是个好主意。

所以不,onPause()是确保数据持久性的最安全的方法。

修改 要回答第二个问题,onSavedInstanceState()不是明确的

  

如果调用,此方法将在onStop()之前发生。无法保证它是在onPause()之前还是之后发生。   http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle

因此对于游戏,我会积极地保存玩家的数据,并且会在onPause()中这样做。其他任何一方都有可能失败或与活动生命周期没有直接关系。