Android SharedPreferences限制?

Tim*_*Tim 13 database storage android sharedpreferences

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

Guz*_*zba 22

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

SharedPreferences文件中值的最大大小限制为您尝试存储的值的最大大小.(这意味着你不能把比String更长的String值放在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);

// Commit the edits! (As infrequently as possible)
editor.commit();
Run Code Online (Sandbox Code Playgroud)

  • "比字符串更长,可以使用Java" - 字符串可以有2 ^ 31 - 1 = 20亿个字符.那么,这可能依赖于手机的内部存储. (3认同)

Fai*_*bid 7

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

  • 究竟.请参阅记事本示例 - 您可以使用ALTER TABLE添加新列.或者你可以添加一个全新的表.您可以切换到SharedPreferences,但由于您已经采用了数据库方法,因此您可以坚持使用它. (2认同)