在我正在开发的项目中,我有很多配置设置。项目的东西,如正在使用静态配置类良好实践吗?
- 报警时间
- 金额从服务器获取
- 的LocationManager整数,如铅丹位置
这些都是静态的决赛,都在一类对应到价值。
我的问题是,将所有这些值移动到单个静态类是否存在任何问题?
我的想法是,当涉及到测试和tweeking应用程序,它会更容易管理。
在我正在开发的项目中,我有很多配置设置。项目的东西,如正在使用静态配置类良好实践吗?
这些都是静态的决赛,都在一类对应到价值。
我的问题是,将所有这些值移动到单个静态类是否存在任何问题?
我的想法是,当涉及到测试和tweeking应用程序,它会更容易管理。
@ Snicolas的答案建立在...
你确实应该坚持的代码(文件或数据库)之外的配置设置。但是,每次需要值时都不应“读取”该配置,否则效率会很低。
使用一个类来管理配置(即AppSettings)是一个好主意。使其成为静态是提供类似单身访问的一种方式。在C#和ASP.NET中,一个Web应用程序将保证静态类的一个且只有一个实例,因此来自不同用户的多个不相关请求将共享完全相同的静态值。
但在你的情况下(我看到标签'安卓')使用Java你最好的选择可能是Singleton方法。我不知道Java中的垃圾收集是如何工作的,但我会说你应该使用单例来确保设置的一个和一个实例。单例确保实例存在(或者创建一个实例),然后将其提供给调用者。
这也可以让它更容易支持在应用程序运行时更改配置值的能力 - 您可以“观察”以定期设置更改。
我不是一个Java人,但如果还没有一个库来处理这个问题,我会感到惊讶(好吧,不是真的)。
我很确定你不是在谈论常量,因为你提到了闹钟时间。
仅在专用类中使用静态字段的问题是,如果设备处于内存压力下,您的类可能会被垃圾收集。在那种情况下,当你再次使用它们时,它们会丢失并重置。
因此,您应该考虑将它们保存在文件或数据库中,具体取决于您要存储的数据量。 SharedPreferences可以用于少量数据,否则,请考虑使用数据库。这是一个更具可扩展性的解决方案,访问时间对于更大的数据集更好。
你可以设置重复报警。我将1小时(以毫秒为单位)传递给警报管理器,例如 – jiduvah
在Rails的世界中,最好实现一个配置模型类,它懒惰地加载和缓存配置信息,它以序列化形式永久存储在简单的两列(键和串行数据值)表中或经常)一个平面文件。配置编辑器就是这个模型的一个View。
这应该是Android的一个很好的解决方案。
另一个想法是将这些常量存储在properties
文件中。并在需要时加载常量。 http://viralpatel.net/blogs/loading-java-properties-files/
如果您觉得方便,这是一个很好的做法。
如果可能的话,我会将配置外部化,以便您可以在运行时更改它,而无需重新构建。 – sean
你的问题很模糊。你是在谈论类/接口中的文件或静态常量吗? – Snicolas
我觉得很清楚,问题说他们在一个班级,并问我应该将他们移到另一个班级 – jiduvah