Android 类字段与首选项

Android 类字段与首选项,android,android-preferences,Android,Android Preferences,从理论上讲,在一些代码中使用偏好是否更好,在用户与活动交互时获取和设置值;或者更好的做法是使用类字段,然后在稍后的一些onDestroy()中,将首选项设置为要保存的类字段的最终值 //-- Is this better? if (a==preferences.getInt(pref1,default){ preferenceEditor.putInt(pref2,someNumber); } //-- Or is this? if (a==field1){ field2 = som

从理论上讲,在一些代码中使用偏好是否更好,在用户与活动交互时获取和设置值;或者更好的做法是使用类字段,然后在稍后的一些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);
}

出于性能原因,字段应优先于首选项,但这也取决于值更改的频率,因此,请不要“使用首选项”

您在那里(在第一个示例中)所做的是与全局变量的交互。如果你能帮助的话,千万不要这样做。这是一种反模式。您的代码中不需要全局变量。这使得代码更难理解/更难测试。相反,无论何时实例化一个类,都要读取全局设置并将它们添加到类的字段中(最好是在构造函数中)。类本身不能知道您的首选项存储

另外,不要使用onDestroy(WTF?)。这里有一条来自:

注意:不要指望调用此方法作为保存数据的位置


相反,将该逻辑放在onPause()中。

谢谢Alexandru!感谢onDestroy()上的提醒。