使用Android共享首选项来存储大量数据是一个好主意吗?

时间:2011-06-13 02:29:16

标签: android sqlite sharedpreferences

所以我从其他人那里继承了这个Android项目。代码目前似乎是将大量数据(应该属于SQLite数据库)存储到共享首选项中。我对这部分代码感到非常不舒服,并希望开始使用sqlite数据库。但是我仍然无法向自己证明自己需要的时间,特别是如果它没有立竿见影的好处。

当然我最终会把它转移到sqlite但是由于我有点紧张的截止日期,我想知道这是否值得现在或以后做。

非常感谢任何关于在共享偏好中存储大量数据的想法和评论。

由于

2 个答案:

答案 0 :(得分:9)

如果它现在有效,那么你绝对可以离开它。你是正确的,大量的数据应该进入数据库。如果不出意外,您可以更轻松地查询数据。

进一步研究发现this post表明您的共享首选项中的大量数据不会出现任何重大问题。但是,您可能会遇到性能问题,因为必须读取单个Shared Pref XML文件才能获得任何pref,而只需要根据需要获取所需的数据。

答案 1 :(得分:0)

TL; DR;不要将共享首选项用于大型存储,而是使用数据库(但如果现在可以使用,那么以后就会这么做)

我不会亲自推荐它,因为系统会为您的应用保留所有共享首选项的内存副本。因此,如果您在其中丢弃大量数据,您的内存使用量将受到影响。也就是说,并且取决于数据格式(是否可以按原样使用它并使用密钥直接找到它 - 如果您只是存储一个巨大的JSON对象,然后您必须解析或者您必须获取所有共享的首选项然后对你真正需要的那个进行线性搜索,在任何一种情况下都没有什么好处)以及你必须访问它的频率,查找比文件或数据库更快,因为它已经在内存中了。它还提供了线程安全的好处(因为数据库在被访问时被锁定,所以也是一个SQL数据库),而不是你自己必须处理它的文件。

希望这有帮助。