哲学上,最好是在整个代码中使用首选项,在用户与活动交互时获取和设置值;或者更好地使用类字段,然后在某些onDestroy()中,或许,将首选项设置为类字段的最终值,而不是想要保存。
//-- Is this better?
if (a==preferences.getInt(pref1,default){
preferenceEditor.putInt(pref2,someNumber);
}
//-- Or is this?
if (a==field1){
field2 = someNumber;
}
...
onDestroy(){
preferenceEditor.putInt(pref1,field1);
preferenceEditor.putInt(pref2,field2);
}
答案 0 :(得分:0)
出于性能原因,字段应优先于首选项,但也取决于值更改的频率
答案 1 :(得分:0)
所以,请不要“使用偏好”。
你在那里做的(在你的第一个样本中)是与全局变量的交互。如果你能提供帮助,切勿这样做。这是一种反模式。您不希望代码中包含全局变量。它使代码更难理解/更难测试。相反,无论何时实例化一个类,都要读取全局设置并将它们添加到类的字段中(最好是在构造函数中)。课程本身不得知道您的偏好存储。
另外,请勿使用onDestroy(WTF?)。以下是来自the reference的说明:
注意:不要指望将此方法称为保存数据的地方!
相反,将该逻辑放在onPause()。