共享首选项 - 单个值的最大长度

Posted

技术标签:

【中文标题】共享首选项 - 单个值的最大长度【英文标题】:Shared Preferences - max length of a single value 【发布时间】:2012-01-20 22:55:49 【问题描述】:

我将字符串存储到共享首选项中,但我无法找到可以存储的最大字符串长度。你知道这个值吗?

【问题讨论】:

如果它真的很大,比如超过 10 KB,您可能希望以其他方式保存它,也许是磁盘上的文件。 【参考方案1】:

作者 Romain Guy 来自问题Asked Here,

无论 Java 字符串的最大长度是多少。所以像 Integer.MAX_VALUE 个字符。

如果您只存储一对/对象,我想虽然 SharedPreference 是一个使用 One Tag 存储的 XML 文件。 因此,如果您认为自己正在写入文件,那么写入 String 是没有限制的..(理论上)

实际上发生的情况是,当您当时使用put/get 函数将值分配给 SharedPreference 时,您 在字符串对象中读取/写入值..so 限制变为一次存储值等于Java的String Object的大小限制

所以在写代码的时候:Limit of SharedPreference String Size = Java String Object Size Limit(实用)

【讨论】:

Integer.MAX_VALUE 是 2147483647。【参考方案2】:

共享偏好存储在/data/data/[package_name]/shared_prefs/[app name].xml,我认为根据android架构没有限制

【讨论】:

共享首选项是否可以安全地将 api 令牌保存在 android 移动应用程序中?请建议。谢谢。【参考方案3】:

当我尝试将最大长度字符串保存到设备中的 SharedPreferences 中时,当 SharedPreferences 数据超过 1.42 MB 时,它会引发内存异常。

所以如果你有超过 1.42 MB 的数据大小来保存它更好的保存使用 SQLite 数据库。

据developer.android.com:

如果您的键值集合相对较少,您会 喜欢保存,您应该使用 SharedPreferences API。

【讨论】:

以上是关于共享首选项 - 单个值的最大长度的主要内容,如果未能解决你的问题,请参考以下文章

如何使用颤振中的键删除/清除共享首选项?

公共共享首选项导致应用程序崩溃

检查共享首选项中是不是存在密钥

在共享首选项中获取文件大小

Firestore 查询变量以填充共享首选项

共享首选项存储在哪里?