为了使用描述首选项的XML文件中的默认值初始化首选项,我可以调用PreferenceManager.setDefaultValues(this, R.xml.preference, false)
。听起来很简单,但我不确定我应该在什么时候打电话给他?
正如我从文档中所理解的那样,在没有设置首选项的情况下,上述调用只需要一次。作为此调用的结果,将设置驻留在/data/data/<myapp>/shared_prefs
中的首选项,因此所有后续读取首选项的尝试都将获得默认值。从逻辑上讲,应该在每个代码路径中调用setDefaultValues
,这些代码路径可能在没有首选项已初始化的情况下执行。随着时间的推移,这被证明是多个地方 - 主要活动,另一个活动,后台服务,小BroadcastReceiver
处理系统消息......现在我已拨打setDefaultValues
onCreate()
对于我的Application对象,因为我已经将它用作其他东西的方便单例。
问题:
getFoo(key, defValue)
次调用中,但这会有效地将整个代码中的默认设置分散。 编辑:基本上,我不知道哪个解决方案更糟糕:每次在给定代码路径中访问prefs时调用setDefaultValues
,或者在某个常见位置调用它(如app的onCreate)每次,无论我是否需要它。
答案 0 :(得分:2)
我将删除原来的答案并回答您实际提出的问题。
MyPrefs
- 这不是我所说的,但这并不重要)。 MyPrefs的主要功能包括:
话虽如此......它对我有用,但是如果你几乎肯定你每次代码运行时都会调用SharedPreferences,而你的代码就像任何代码一样好。
希望这比我之前的回答更有帮助。