【问题标题】:Is using Android shared preferences for storing large amounts of data a good idea?使用 Android 共享偏好来存储大量数据是个好主意吗?
【发布时间】:2011-09-13 15:31:20
【问题描述】:

所以我从别人那里继承了这个 Android 项目。该代码目前似乎将大量数据(应该真正属于 SQLite 数据库)存储到共享首选项中。我对那部分代码感到非常不舒服,并想开始使用 sqlite 数据库。但我仍然无法为自己证明所花费的时间是合理的,尤其是如果它没有直接的好处的话。

当然,我最终会将其移至 sqlite,但由于我的截止日期有点紧,我想知道现在或以后是否值得这样做。

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

谢谢

【问题讨论】:

    标签: android sqlite sharedpreferences


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。我知道这个问题并没有真正的“一个答案”,因为我在征求意见。但是您的回答确实解决了我的困境,所以我将继续并将其标记为正确答案。
    【解决方案2】:

    TL;DR;不要将共享首选项用于大型存储,而是使用数据库(但如果它现在可以工作并且您稍后再做)

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      相关资源
      最近更新 更多