共享首选项“限制”

我也知道类似的问题,这个问题已经被无数次的问及了,所以通过我的浏览部分find了一个答案,但并不完整,而android文档并没有真正的帮助。 很显然,我知道他们是如何工作的,以前曾经多次使用过共享的偏好,但是我想知道什么时候(多less)太多了,我读过的人已经存储了100KBS,没有任何问题。 长话短说 – 有人真的有太多的数据存储在共享偏好存储问题,是什么问题,数据被删除或?

**这只是出于好奇而提出的一个问题,我已经将我的大数值存储在SQL DB中,只是想知道会是什么,如果由于某种原因有人将所有内容都存储在共享首选项中,是否会有任何问题

Solutions Collecting From Web of "共享首选项“限制”"

由于SharedPreferences存储在XML文件中,因此缺乏强大的SQLite事务支持,所以我不build议在SharedPreferences存储“100KBS”。

也就是说,我知道的最小大小限制将是您的可用堆空间量,因为SharedPreferences会将整个XML文件的内容读取到内存中。

从阅读你的问题我会认为你不应该使用SharedPreferences,因为(一)他们的目的是存储less量的数据(因此使用XML),和(b)有很多简单的select。

关于SharedPreferences的唯一特别的事情就是与首选项活动的集成,以向用户显示您的首选项,这可能不适用于您的情况,基于您计划存储的数量。 (哦,SharePreferences也为你处理并发问题。)

您可以使用Java的序列化来将偏好类存储在二进制文件中。 这些会比PreferenceFile小得多,可以很容易地通过GZIPInputStream传递,使它更小(或CipherInputStream)来encryption它。 我发现这个替代scheme是一个强大的,简单的,跨平台的方式来存储应用程序数据的SQLite的权力是不需要的。

(对不起,这不是一个直接的答案。)

SharedPreference数据存在局限性。 在我的情况下,当SharedPreference数据跨越1428.51-kb时,它会抛出一个内存exception。

所以当你需要巨大的数据存储时,最好使用SQLite数据库。