【发布时间】:2011-11-28 10:40:31
【问题描述】:
我正在搜索最大的 Android SharedPreferences 键、值对,但找不到任何好的答案。其次,我想问一下,如果我有一个键,它的字符串值限制是多少。可以放多少字符。如果我需要频繁更改值的选择,我应该使用 SQLite 还是 SharedPreferences。 请给我一些好的资源。
你的,
【问题讨论】:
我正在搜索最大的 Android SharedPreferences 键、值对,但找不到任何好的答案。其次,我想问一下,如果我有一个键,它的字符串值限制是多少。可以放多少字符。如果我需要频繁更改值的选择,我应该使用 SQLite 还是 SharedPreferences。 请给我一些好的资源。
你的,
【问题讨论】:
所有共享首选项都存储在 /data/data/[package name]/shared_prefs/[app name].xml 中,所以我认为基于架构没有限制。
我不知道实际的限制,但我认为这对你来说已经足够了..
检查Shared Preference 以供参考。
should I use SQLite or SharedPreferences.
如果您需要存储会定期更改的值,最好使用 SQLite。 你也可以存储更多的数据..
【讨论】:
在Android Developer reference 之后,key, value and node name 似乎每个都定义了一个最大值。
如果您必须更改许多相关的密钥对,我建议您使用 creating a simple SQLite database,但如果您只使用几对,SharedPreferences 可能不是一个糟糕且快速的解决方案。
【讨论】:
SharedPreferences 用于快速存储单个字符串、设置、标志等值。SQLite 数据库可以做同样的事情,但任务更重一些,例如存储具有多个属性的客户数据等信息表并能够搜索(SQL 中的查询)。
所以答案是,“这取决于”您要存储的“东西”是什么?如果它是用户设置,那么 SharedPreferences 既快速又简单。如果它是一组记录,那么 SQLite 数据库可能更有意义。
【讨论】:
至于密钥大小限制:我相信它只是字符串的最大大小。也在这里回答:Shared Preferences - max length of a single value
最大键/值对限制:使用共享首选项,这些值存储在 .xml 文件中,如上述答案所述,您可以拥有多个 .xml sharePreference 文件。我认为大小限制受您的应用程序大小或使用您的应用程序的设备上可用存储空间的限制。
如果您的偏好值经常变化,我会考虑使用局部变量来跟踪当前偏好集,也许是一个全局单例类。并在应用程序被销毁/关闭之前将更改保存到磁盘。如果您不喜欢这个想法,请尝试使用 SharedPreferences,但请务必使用 SharedPreferences.Editor.apply() 而不是 SharedPreferences.Editor.commit() 来保存首选项(异步应用保存到磁盘,同步提交保存)。
【讨论】: