在移动应用中存储数据的最佳方式

时间:2014-01-07 16:28:09

标签: android ios mobile storage store

我很好奇在应用程序中存储数据的最佳方式,以便通过应用程序内的更新和可读性进行存储。

基本上我有一个正在构建的游戏,并且它有关卡,我需要检查用户是否已经完成了关卡,如果有,那么它可以解锁下一关,如果没有,则保持下一级锁定。 / p>

所以我需要在手机上存储一个文件,我可以参考该文件以查看该级别是否已经被打败。

我做了一些研究,发现我可以使用共享首选项,内部数据存储或外部数据存储。我倾向于外部数据存储,直到一位朋友指出人们经常擦拭SD卡以放入新的音乐,视频和图片。但是,如果我使用内部数据存储,那么当我使用新功能和级别更新应用程序时,数据会丢失吗?那么共享偏好是最好的方式吗?

请您给我一些建议,告诉我什么是存储数据的最佳方法,这些数据将在以后最容易阅读,我将如何做?我会存储节拍水平列表,然后交叉检查该级别的级别吗?

提前致谢

3 个答案:

答案 0 :(得分:1)

我建议在iOS上使用CoreData或SQLite来存储应用程序的数据。使用XML非常麻烦,因为每次加载它都需要进行解析,因此它不是很优化。在iOS上,我们有NSUserDefaults,它提供存储功能,但建议存储少量数据。

答案 1 :(得分:1)

如果您使用内部数据存储或共享首选项,则不会在应用更新(甚至操作系统更新)上删除数据。如果用户卸载应用程序,“清除应用程序上的数据”或擦除整个设备,则仅删除它。共享首选项实际上是应用程序内部数据存储位置内的文件,由操作系统管理(没有其他应用程序可以访问它)。

听起来对于您的用例,共享首选项是可行的方法。这正是他们的目的。至于如何精确地构建你存储的键/值,这完全取决于你的应用程序...我想说可能有“pass_level_1”之类的键等等。不幸的是,共享首选项不支持数组(既不用于键,也不用于对于价值观。)

另请注意,在root设备上,用户可以访问该数据(即使它不是纯文本格式)。因此,如果这是一个安全问题,请考虑使用加密或其他类型的安全存储。使用外部存储也有这个问题,甚至更多,因为所有用户都可以访问它,而不仅仅是root用户。

答案 2 :(得分:0)

在我的游戏中,我将该信息保存在内部数据存储中存储的XML上,因此只有当用户卸载应用程序或选择“清除数据”时数据才会丢失,但在我的情况下,我有很多要保存的信息,如星星,积分和一些奖励信息,如果只需保存级别,我认为SharedPreferences是最佳选择...
最后一个资源是将此信息保存在Web服务中,但我不认为是这种情况。