我想知道在
Android上保存文件时,其他人使用什么策略来避免数据丢失.我有几个游戏应用程序,基本上,他们可能会在用户暂停(onPause)时保存游戏状态/保存游戏.
这种情况在99.99%的情况下工作,但每隔一段时间,我会收到一个保存游戏的例子,其中保存过程出错了.通常,这是一个格式不正确的XML文件,通常在某个任意点被截断.根据我收到的错误报告,我相信这个问题大多发生在用户通过电话或类似的游戏进行游戏时中断的情况,而Android操作系统会在完成保存之前杀死应用程序.保存文件的代码很简单,所以我很难看到还有什么可能导致这个问题.
这是一个严重的问题,因为它通常会导致玩家的保存进度被破坏.
我正在考虑首先写一个空文件,然后再复制到“真实”文件,但我怀疑这将简单地增加问题,因为它将总体上花费更多的时间,仍然有风险中断.
任何有安全方式做到这一点的人,Android相对保证不会搞砸?
所以总结一下,到目前为止提出的选择(据我了解):
>使用服务进行保存过程,假设这不太可能被操作系统杀死.
>保存在临时文件中;保存验证后复制.
>增加游戏状态的保存(我实际上已经使用这个播放器日志信息).
>组合2& 3.
>将保存移动到另一个线程,因为ANR可能会导致[DC的注释].
我不认为SharedPreferences将适用于这种结构化数据,目前,这些方法都不是一个理想的解决方案,所以我仍然乐意提出建议.
我还没有设法测试所有这些方法,所以不要浪费赏金,我已经把它分配给我觉得最有可能解决问题的答案.我计划在接受答案之前先查看各种选项.感谢所有好的建议.