【问题标题】:Android: Are static variables significantly faster than Shared Preference?Android:静态变量是否比共享首选项快得多?
【发布时间】:2019-08-23 06:19:10
【问题描述】:

在我的应用程序中,我将大量数据保存到共享首选项中。其中一些共享首选项在应用会话期间被多次使用。我正在考虑创建一个类来保存static 成员中最常用的SharedPreferences 的值。

因此,如果我有一个在应用程序中被多次访问的City 对象,我想我会在应用程序启动期间从 SharedPreference 中获取 City 对象值,将其存储在一个静态变量中并在应用程序的其余部分(通过一些管理器类)。

但我想知道这是否会提供任何性能改进?我试图找到SharedPreferencesStatics 的性能比较,但找不到任何可以很好地回答我的问题的东西。有人有明确的答案吗?谢谢!

【问题讨论】:

    标签: android static sharedpreferences


    【解决方案1】:

    如您所知,共享首选项存储在 XML 文件中,因此每次修改数据时,都会对文件系统进行写入操作。另一方面,一旦从与共享首选项关联的 XML 文件中读取数据,这些值就会缓存在内存中。

    所以,在你的应用程序执行过程中,如果只从 Shared Preference 中读取数据并写入几次数据,使用静态数据或直接使用 Shared Preference 具有相同的性能。如果多次写入数据,可以考虑将数据缓存在静态变量上,然后写入 Shared Preferences。

    只是一些最后的考虑:

    • 如果您有很多结构化数据要读取/写入,请考虑使用 SQLite 数据库
    • 共享首选项支持简单类型。如果你需要坚持大课,可以考虑使用Kripton Persistence Library。需要说明的是,我是 Kripton 的作者。

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      Shared Preferences 无论如何都会缓存在内存中(在第一次读取之后),因此您不会获得任何东西。

      如果您在更新时不记得写入 SharedPreferences,则可能会添加一些细微的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多