0

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

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

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

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

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

谢谢

4

1 回答 1

1

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

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

编辑 要回答您的第二个问题, onSavedInstanceState() 并不明确

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

所以对于一个游戏,我会积极地保存玩家的数据,并且会在 onPause() 中这样做。其他一切要么有可能失败,要么与 Activity 生命周期没有直接关系。

于 2012-11-26T02:47:19.053 回答