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

使用Android共享首选项存储大量数据是个好主意吗?,android,sqlite,sharedpreferences,Android,Sqlite,Sharedpreferences,所以我从其他人那里继承了这个Android项目。代码目前似乎在共享首选项中存储大量数据(这些数据实际上应该属于SQLite数据库)。我对这部分代码感到非常不舒服,希望开始使用sqlite数据库。但我仍然无法向自己证明这需要多少时间,特别是如果它没有立即的好处的话 当然,我最终还是会把它转移到sqlite上,但由于我的最后期限有点紧,我想知道这是否值得现在或以后做点什么 如果您对在共享首选项中存储大量数据有任何想法和意见,我们将不胜感激 谢谢如果它现在能工作,那么你肯定可以离开它。大量数据应该进入

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

当然,我最终还是会把它转移到sqlite上,但由于我的最后期限有点紧,我想知道这是否值得现在或以后做点什么

如果您对在共享首选项中存储大量数据有任何想法和意见,我们将不胜感激


谢谢

如果它现在能工作,那么你肯定可以离开它。大量数据应该进入数据库,这是正确的。如果没有其他问题,您将更容易查询数据

进一步的研究表明,共享pref中的大量数据不会带来任何重大问题。但是,您可能会遇到性能问题,因为必须读取单个共享的Pref XML文件才能获取任何Pref,而使用数据库时,您只需根据需要获取所需内容。

TL;博士不要在大容量存储中使用共享pref,而是使用DB(但如果它现在起作用,而您正忙着稍后再做) 我个人不会推荐它,因为系统会为你的应用程序保存一份所有共享pref的内存副本。因此,如果您在其中抛出大量数据,您的内存使用将受到影响。也就是说,根据数据格式(是否可以按原样使用并使用密钥直接查找-如果您只存储一个巨大的JSON对象,然后需要解析,或者如果您必须获取所有共享的pref,然后对真正需要的进行线性搜索,这两种情况下都没有什么好处)以及您必须访问它的频率,它可能比文件或数据库更快,因为它已经在内存中。它还提供了线程安全的好处(SQL DB也是如此,因为DBs在访问时会被锁定),而不是需要自己处理的文件


希望这有帮助。

非常感谢。我知道这个问题实际上没有“一个答案”,因为我在征求意见。但是你的回答确实解决了我的困境,所以我将继续,把这个标记为正确的答案。