Android:静态变量是否比共享首选项快得多?



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

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

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

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

因此,在应用程序执行期间,如果仅从共享首选项读取数据并写入数据几次,则使用静态数据或直接使用共享首选项具有相同的性能。如果多次写入数据,则可以考虑将数据缓存在静态变量上,然后写入共享首选项。

只是一些最后的考虑:

  • 如果您有许多结构化数据要读/写,请考虑使用 SQLite 数据库
  • 共享首选项支持简单类型。如果需要持久化大类,请考虑使用 Kripton 持久性库。需要明确的是,我是克里普顿的作者。

我希望这有所帮助。

无论如何,共享首选项都会缓存在内存中(在第一次读取后),因此您不会获得任何内容。

但是,如果您在更新时不记得写到共享首选项,您可能会添加细微的错误。

我已经在一个主要读取(只写入一次)的项目上尝试了这两种可能性,并且没有真正发现任何性能差异。顺便说一下,也许如果您在类中多次访问 SharedPreferences,那么从那里读取数据可能是个好主意。

最新更新