我正在尝试为我正在开发的游戏实现一个“简历”功能。其工作原理如下:
如果用户开始一个游戏,然后结束游戏,游戏状态被保存。再次打开应用程序时,将提供“继续”选项。
如果活动仅暂停(例如,由于电话呼叫而最小化)并且用户返回,则应显示正在进行的游戏。它不应该终止并保存状态,当然,除非操作系统决定终止活动。
我决定在大部分情况下使用sharedpreferences,以及一个自定义文件来保存额外的信息。我看到很多人建议用onPause()
方法保存程序的状态,我一直在想为什么会这样。
据我所知,使用OnDestroy()
会更好。onPause()
并不意味着活动将被终止,因此我可能在必要地保存游戏状态时浪费时间。我已经检查了我的程序,并在适当的时间调用了onDestroy()
。因此我假设我没有泄漏,防止活动被破坏。
尽管如此,我找不到任何地方推荐在onDestroy()
中保存状态,每个人似乎都建议使用onPause
。我是不是漏掉了一条信息?
最佳答案
尽管如此,我找不到任何地方推荐在ondestroy()中保存状态,每个人似乎都推荐使用onpause。我是不是漏掉了一条信息?
你是:)。onDestroy()
不能保证被调用。参见the documentation了解:
注意:不要指望这个方法被调用来保存数据!例如,如果活动正在编辑内容提供程序中的数据,则这些编辑应在onPause()或onSaveInstanceState(bundle)中提交,而不是在此处提交。此方法通常实现为释放与活动相关联的资源(如线程),以便在其应用程序的其余部分仍在运行时,已销毁的活动不会留下此类内容。在某些情况下,系统将简单地终止活动的宿主进程,而不调用其中的此方法(或任何其他方法),因此不应使用它来执行在进程结束后仍要保留的操作。