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

57

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


如果它真的很大,比如超过10千字节,你可能想以其他方式保存它,比如存储为磁盘文件。 - Fred
3个回答

94

Romain Guy提供,来自此处提问

Java字符串的最大长度是多少?比如Integer.MAX_VALUE个字符。

我想,如果你只存储一个键值对/对象,那么SharedPreference就像是一个只有一个标签的XML文件。因此,如果你把它看作文件写入,那么在其中写入字符串时,理论上没有限制...(理论上)

但实际上,在使用put/get函数将值存储到SharedPreference时,你会读取/写入字符串对象中的值...因此,一次存储值的限制等于Java字符串对象的大小限制

因此,在编写代码时:SharedPreference字符串大小限制 = Java字符串对象大小限制(实际上)


7
Integer.MAX_VALUE 的值为2147483647。 - Fred

25

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


在Android移动应用中,共享首选项是存储API令牌的安全位置吗?请提供建议。谢谢。 - Kamlesh
2
@Kamlesh 使用EncryptedSharedPreferences。 - Muneesh
1
https://pub.dev/packages/encrypted_shared_preferences - Kamlesh

21

当我试图将最长的字符串保存到设备的SharedPreferences中时,如果SharedPreferences数据超过1.42 MB,则会引发Memory Exception异常。

因此,如果您有超过1.42 MB的数据大小要保存,最好使用SQLite数据库进行保存。

根据developer.android.com

如果您有一个相对较小的键值集合需要保存,您应该使用SharedPreferences API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接