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

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

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

任何关于在共享偏好中存储大量数据的想法和评论都将非常受欢迎。

谢谢

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

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

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

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

希望这可以帮助。