0
我有一個應用程序,當我第一次運行應用程序時,我約設置了大約200個共享首選項。我最初是通過從我的onCreate方法調用它來加載所有偏好設置sharedPreferences默認值
SharedPreferences pref = getSharedPreferences(CALC_PREFS, MODE_PRIVATE);
settingsEditor = prefs.edit();
settingsEditor.putString("Something", "");
....
settingsEditor.commit();
它會很好,而且很快。然後,我重新設計了我的應用程序,使其擁有抽象活動類來處理所有使用共享偏好的工作,因爲我有4個不同的活動來訪問這些偏好。
public abstract class AnActivity extends Activity{
// Shared Preference string
private static final String CALC_PREFS = "CalculatorPrefs";
// Editor to customize preferences
private Editor settingsEditor;
// Shared preference
private SharedPreferences prefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
prefs = getSharedPreferences(CALC_PREFS, MODE_PRIVATE);
settingsEditor = prefs.edit();
}
protected void addPref(String key, String value){
settingsEditor.putString(key, value).commit();
}
protected void addPref(String key, int value){
settingsEditor.putInt(key, value).commit();
}
//other methods were not posted
}
我的主要活動不擴展「AnActivity」類。但是,當我在全新安裝上運行我的應用程序或試圖訪問任何共享首選項時,實例化所有內容需要10秒以上的時間。
如何以乾淨有效的方式設置默認值?創建Abstract類以處理首選項會創建比僅手動調用getSharedPreferences更多的開銷嗎?
固定它。我在每個偏好之後被稱爲commit();我不知道它有多昂貴。我最初將200個偏好一起投入使用,並沒有考慮到重組。非常感謝! – zabawaba99