我想知道其他人在 Android 上保存文件时使用什么策略来避免数据丢失。我有几个游戏应用程序,本质上,它们可能会在用户暂停(onPause)时保存游戏状态/保存游戏。
这在 99.99% 的情况下有效,但每隔一段时间我就会收到一个保存游戏的例子,其中保存过程出错了。通常,这是一个格式不正确的 XML 文件,通常会在某个任意点被截断。根据我收到的错误报告,我认为问题主要发生在用户在游戏过程中被电话或类似情况打断时,Android 操作系统会在应用程序完成保存之前杀死该应用程序。保存文件的代码非常简单,因此我很难看出还有什么可能导致此问题。
这是一个严重的问题,因为它通常会导致玩家的保存进度被破坏。
我想先写入一个空文件,然后再复制到“真实”文件,但我怀疑这只会增加问题,因为它总体上会花费更多时间,并且仍然有被中断的风险。
谁有一种安全的方法来做到这一点,Android相对保证不会搞砸?
总结一下,到目前为止建议的选项(据我所知):
- 使用服务进行保存过程,假设该服务不太可能被操作系统终止。
- 保存在临时文件中;验证保存后复制。
- 增量保存游戏状态(实际上我已经将其用于玩家日志信息)。
- 2 和 3 的组合。
- 将保存移至另一个线程,因为问题可能出在 ANR 终止上 [DC 的评论如下]。
我认为 SharedPreferences 不适用于这种结构化数据,目前,这两种方法似乎都不是理想的解决方案,所以我仍然愿意接受建议。
我还没有设法测试所有这些方法,因此,为了避免浪费赏金,我将其分配给我认为最有可能解决问题的答案。不过,在接受答案之前,我仍然计划检查各种选项。感谢所有好的建议。
对于服务业来说,这听起来是一份不错的工作。
http://developer.android.com/reference/android/app/Service.html http://developer.android.com/reference/android/app/Service.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)