17

我在Android上开发了一款游戏。我目前将大部分游戏统计数据保存在数据库中。但是,该应用程序在数据库中使用的不止一行。我现在有兴趣介绍一些新的统计数据,但这会导致我的数据库重新安装,从而清除每个人的进度。为了将来避免这种情况,我正在考虑使用 SharedPreferences 存储游戏统计数据。我的问题是在它成为问题之前可以以这种方式存储多少不同的东西。总共我将存储大约 40 个值,所有整数。

4

4 回答 4

25

SharedPreferences 被写入 xml 文件,因此 Android 上文件的最大大小是 SharedPreferences xml 文件可以有多大。我可以肯定地说 40 个整数值不会有问题。

SharedPreferences 文件中值的最大大小限制为您尝试存储的值的最大大小。(这意味着您不能在 Java 中放置比字符串更长的字符串值。)

我唯一建议的是确保尽可能批量编辑(意味着不要.commit()每次更改),也不要为每次更改创建新编辑器。(这些只是好的做法。)

SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("firstValue", mFirst);
editor.putInt("secondValue", mSecond);
editor.putInt("thirdValue", mThird);

// Commiting the edits
editor.commit();
于 2010-07-08T00:46:28.313 回答
7

我不知道任何限制,但关于你的问题,每个人的进步都被消灭了。您可以覆盖 SQLite 类中的 onUpgrade 方法,然后将每个人的数据迁移到较新的数据库。

于 2010-07-08T00:42:55.293 回答
1

不要对游戏数据使用共享偏好。我可以下载您的游戏并使用下面的工具将其破解。如果你的钱存在那里,我就把它换成 420 万金,然后说它好。

https://www.kingoapp.com/root-tutorials/hack-app-game-cheat-droid.htm

是什么阻止了某人使用共享首选项编辑器编辑他们的 XML 文件?

我不敢相信在回答你的问题时没有人想到这一点。在电子游戏环境中,您的限制很重要。没有什么能阻止任何人编辑他们所有的共享偏好数据来破解你的游戏中的哔哔声。

于 2020-09-09T03:58:24.973 回答
0

正如其他答案中提到的,共享首选项仅受手机存储和简单性的限制。

但是,如果您希望您的用户无缝地享受 Android 的自动备份,那么您的所有本地数据,包括 SQLite 和共享首选项数据,总共需要 <25MB

于 2020-02-08T21:24:22.800 回答