2

在我目前正在开发的项目中,我有很多配置设置。诸如此类的事情

  • 闹钟时间
  • 从服务器检索的项目数量
  • LocationManager 整数,例如最小位置

这些都是静态最终的,并且都在与值对应的类中。

我的问题是,将所有这些值移动到单个静态类有什么问题吗?

我的想法是,在测试和调整应用程序时,它会更容易管理。

4

5 回答 5

2

以@Snicolas 的回答为基础...

您确实应该在代码(文件或数据库)之外保留您的 CONFIGURATION 设置。但是您不应该在每次需要值时“读取”该配置,否则效率会很低。

使用类来管理配置(即 AppSettings)是一个好主意。使其成为静态是提供类似单例的访问的一种方式。在 C# 和 ASP.NET 中,Web 应用程序将保证一个且只有一个静态类实例,因此来自不同用户的多个不相关请求将共享完全相同的静态值。

但在你的情况下(我看到标签'android')使用Java你最好的选择可能是单例方法。我不知道垃圾收集在 Java 中是如何工作的,但我想说你应该使用单例来确保你的设置只有一个实例。单例确保一个实例存在(如果不存在,则创建一个),然后将其提供给调用者。

这也可以更容易地支持在应用程序运行时更改配置值的能力——您可以“观察”定期设置更改。

我不是 Java 人,但如果还没有一个库来处理这个问题,我会感到惊讶(当然不是真的)。

于 2012-11-14T19:22:54.557 回答
1

我很确定您不是在谈论常数,因为您提到了闹钟时间。

在专用类中仅使用静态字段的问题是,如果设备处于内存压力之下,您的类可能会被垃圾回收。在这种情况下,当您再次使用它们时,它们只会丢失并重置。

因此,您应该真正考虑将它们保存在文件或数据库中,具体取决于您要存储的数据量。SharedPreferences 对于少量数据可能很有用,否则,请考虑使用数据库。这是一个更具可扩展性的解决方案,对于更大的数据集,访问时间会更好。

于 2012-11-14T19:09:24.180 回答
0

在 Rails 世界中,实现一个懒加载和缓存配置信息的配置模型类是一个很好的实践,这些配置信息以序列化的形式永久存储在一个简单的两列(键和序列数据值)表或(较少见)平面中文件。配置编辑器只是这个模型的一个视图。

这在 Android 中也应该是一个很好的解决方案。

于 2012-11-14T19:47:49.587 回答
0

另一个想法是将这些常量存储在一个properties文件中。并在需要时加载常量。http://viralpatel.net/blogs/loading-java-properties-files/

于 2012-11-14T19:50:01.857 回答
-2

如果您觉得方便,这是一个很好的做法。

于 2012-11-14T20:10:03.040 回答