我一直在研究在转弯之间保存游戏数据的替代方法,并想知道是否有人可以将我指向正确的方向。保存数据的首选方法 - 首选项,sqlite,可序列化或其他?
我有大约32k的数据,必须在onPause期间保存。由于数据量很大,我排除了偏好。我花了几天时间玩SQLite,但不能在不到两秒的时间内保存数据(尽管时间肯定没有浪费)。
我决定在游戏开始时使用数据库加载常量数据。这肯定会让游戏中的各种参数和默认值更容易调整。但是这仍然让我寻找写数据的理想方法。
需要保存的数据基本上是9次出现的A类和9次出现的B类。我是Android的学习曲线的密集月份(以及来自C++背景的Java细微差别)并一直在疯狂地谷歌搜索。这带来了两种可能的头脑 -
1)序列化(ObjectOutputStream的)
我想这将是完美的解决方案,但是,看了关于这个问题的其他几个职位,收集它没有强烈推荐的Android平台由于速度和内存分配而引发垃圾收集器陷入潜在的愤怒。
2)DataOutputStream类类
我现在的想法是加载和保存功能添加到这两个类和使用DataOutputStream类和DataInputStream类中调用它们写入和读取各个数据。
类中的数据是基本类型(主要是字符串和ints)和基元数组,所以没有太多复杂的内容来分解。这第二个解决方案看起来是一个好的,可行的解决方案?还是还有其他解决方案,我还没有意识到?
需要考虑的主要因素是写入闪存可能是一项长期操作,无论数据的大小如何。即使写入1个字节也会花费大量时间。因此,请确保您的解决方案缓冲所有数据并尽可能少地进行操作。 – Jems
感谢您的建议。我已经使用了DataOutputStream方法,写入数据的时间现在可以忽略不计(大约0.1秒)。我很高兴我对SQLite数据库有了一些偏见,因为它们肯定会非常有用:) – Rok