我在安卓上开发了一款游戏,目前将大部分游戏统计数据存储在数据库中。然而,应用程序只利用了数据库中的单行数据。现在我有兴趣引入一些新的统计数据,但这将导致我的数据库重新安装,从而清除每个人的进度。为避免将来出现这种情况,我考虑使用SharedPreferences来存储游戏统计数据。我的问题是,在变成问题之前可以存储多少不同的内容。总共会存储约40个值,都是整数。
我在安卓上开发了一款游戏,目前将大部分游戏统计数据存储在数据库中。然而,应用程序只利用了数据库中的单行数据。现在我有兴趣引入一些新的统计数据,但这将导致我的数据库重新安装,从而清除每个人的进度。为避免将来出现这种情况,我考虑使用SharedPreferences来存储游戏统计数据。我的问题是,在变成问题之前可以存储多少不同的内容。总共会存储约40个值,都是整数。
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();
如其他答案所述,Shared Preferences 只受手机存储和简单性的限制。
然而,如果您希望用户无缝地享受 Android 的自动备份功能,则所有本地数据(包括 SQLite 和 Shared Preference 数据)需要<25MB 总共。