android在onPause或onDestroy中保存游戏状态?

时间:2012-02-08 01:48:37

标签: android

我正在尝试为我正在开发的游戏实现“简历”功能。它应该如下工作:

  • 如果用户开始游戏并稍后以完成结束游戏,则保存游戏状态。再次打开应用程序时,可以使用“恢复”选项。

  • 如果活动仅暂停(例如,由于电话呼叫而最小化)并且用户返回,则应显示正在进行的游戏。它不应该终止并保存状态,除非操作系统决定终止该活动。

我决定大部分时间使用SharedPreferences,以及自定义文件来保存额外信息。我见过很多人建议用onPause()方法保存程序的状态,我一直想知道为什么会这样。

从我可以收集的信息来看,使用OnDestroy()会更好。 onPause()并不意味着活动将被杀死所以我可能在保存游戏状态时浪费时间。我检查了我的程序,并在适当的时候调用了onDestroy()。因此,我假设我没有泄漏,以防止活动被破坏。

尽管如此,我找不到任何建议在onDestroy()中保存状态的人,似乎每个人都建议使用onPause。我在这里错过了一条信息吗?

1 个答案:

答案 0 :(得分:5)

  

尽管如此,我找不到任何建议在onDestroy()中保存状态的人,似乎每个人都建议使用onPause。我在这里错过了一条信息吗?

你是:)。 onDestroy()无法保证被调用。请参阅the documentation

  

注意:不要指望将此方法称为保存数据的地方!例如,如果某个活动正在编辑内容提供程序中的数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处。此方法通常用于释放资源,例如关联的线程使用一个活动,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西。 在某些情况下,系统会在不调用此方法(或其他任何其他方法)的情况下简单地终止活动的托管过程,因此不应将其用于执行过程后保留的内容走了。