【问题标题】:Shared Preference size limit共享首选项大小限制
【发布时间】:2017-11-15 21:09:43
【问题描述】:

我正在开发一个简单的 android 应用程序,我需要在其中缓存 4 个 ArrayLists,每个 ArrayLists 有 50 个对象。它可能包含最多 1MB 的数据。为此,我使用 SharedPreference。

可以在我的用例中使用 SharedPreference 还是应该使用 Internal Storage(FileOutputStream)?

SharedPreference 的大小限制是多少?

我不想将 SQLite 用于如此少量的数据,它会使代码复杂化。

【问题讨论】:

  • “可以在我的用例中使用 SharedPreference 还是应该使用内部存储?” -- SharedPreferences 和 SQLite 数据库默认都存储在内部存储中。 “内部存储”不是一种文件。
  • 好的,我刚刚编辑了我的问题。
  • have a look at this 我想这就是你想要的
  • @nasser 我已经完成了这个。我想知道我可以在 SharedPreference 中存储多少数据,有什么限制吗?
  • 如果您觉得您的数组列表值得更好的结构化并且将来可能会扩大,请使用 Sqlite(或者更好,使用 ORM)。如果您觉得需要简单的 getter、setter 功能,请使用 SharedPreferences。但是,请确保将来应用程序存在大小限制,因为 SharedPreferences 可能会引发错误。 See here

标签: android gson


【解决方案1】:

based on @CommonsWare answer in this post

由于 SharedPreferences 存储在 XML 文件中,因此缺少 SQLite 强大的事务支持,我不推荐 在 SharedPreferences 中存储“100KBS”。

话虽如此,我知道的最小尺寸限制将是您的 可用堆空间量,因为 SharedPreferences 读取整个 XML 文件的内容到内存中。

我认为如果你使用 SQLite 数据库会更好

【讨论】:

  • 将数据写入文本文件怎么样? see this answer
  • Android2.3发布新的aapt后,现在对任何资源都没有限制
  • 你的意思是我现在可以使用 SharedPreference 了吗?你能分享一下你是从哪里得到这些信息的吗?
  • "7.6.2. 应用程序共享存储设备实现必须为应用程序提供共享存储空间。提供的共享存储空间必须至少为 1GB。"从source.android.com/compatibility/2.3/android-2.3.3-cdd.pdf 读取它,因此基于此,您没有预定义的限制,只需使用前一个应用程序使用后剩余的存储空间
【解决方案2】:

我知道的最小大小限制将是您的可用堆空间量,因为 SharedPreferences 会将整个 XML 文件的内容读入内存。由于 SharedPreferences 存储在 XML 文件中,因此缺乏 SQLite 的强大事务支持。如果你要存储超过 100k 的数据,请使用 sqlite

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多