多少个简单的键值对无法在Android中存储数据?

Pyt*_*ife 4 java android sharedpreferences

我目前正在尝试使用Android中的“共享首选项”将其保存在键值对中。好吧,我正在这样做,似乎就出现了这个问题(考虑到我要保存大量的数据。)有多少对不同的键值对被认为还可以保存在我的应用程序中?我目前正在考虑保存100到150个不同的值。(所有名称仍具有唯一的键字符串名称。)使用共享首选项存储的数据是否过多?

这可能是一个愚蠢的问题,但是唯一愚蠢的问题是一个未被问及的问题,我似乎找不到答案。我所了解的只有您应该仅使用“共享首选项”保存基本值。(我已经在这么做了...)-谢谢

Hex*_*ugs 6

多少到底是个问题。但是,值得一提的是SharedPreferences work in order to get a feel for whether usingSharedPreferences`是怎么走的。

据我所知,对的大小没有硬性限制SharedPreferences,但是SharedPreferences存储在XML文件中,并且当您第一次访问时SharedPreferences,整个文件都会被读取并存储在内存中,因此,这本身会对使用的堆空间产生影响可能会导致内存不足错误(部分取决于数据大小,可用内存以及应用程序其余部分所需的内存使用情况)。因此,对大量数据使用SharedPreferences通常意味着您使用的内存超出了必要。如果要将数据从SharedPreferences另一个数据结构读取,则需要将该数据在内存中存储两次。此外,就文件系统上使用的空间而言,XML效率不是很高。

我并不是说使用是错误的,SharedPreferences但是与使用SharedPreferences相比,使用SharedPreferences的简单性通常是在使用内存效率更高的东西(例如SQLite DB)和为您提供额外的功能(搜索,事务支持等)之间进行权衡。 。

它还部分取决于您存储的内容-例如,存储的是布尔值还是长字符串在内存使用方面有很大的不同。您对数据所做的操作可能会有所不同,因为哪种方法也是正确的选择。您是否需要它具有可伸缩性(例如,您现在要存储100到150个值,但这会增加吗?)。

如果我是你,我会考虑我的数据有多大(即,使用的内存量而不仅仅是键值对的数量)?我将来可能需要存储更多吗?SQLite的额外功能会有用吗?

基于您提供的有限信息,我的直觉是我可能会使用SQLite,但我基于这样的假设,即可伸缩性可能很重要,并且您存储的字符串超过几个字符,即使这样我敢肯定,有些人会不同意,因为在这种情况下,“多少就是太多”是主观的。