簡體   English   中英

設置sharedPreferences默認值

[英]Setting sharedPreferences default values

我有一個應用程序,在該應用程序首次運行時,我大約設置了200個共享首選項。 我最初是通過從onCreate方法調用它來加載所有首選項的

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秒鍾以上的時間。

如何以干凈有效的方式設置默認值? 與僅手動調用getSharedPreferences相比,創建一個Abstract類來處理首選項是否會產生更多開銷?

每次添加首選項時都在提交嗎? 這可能是您的問題,對每個條目的提交都可能會非常昂貴,將您的put批放在一起並提交一次。

如果不需要指定默認值,則可以始終使用clear()

http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#clear%28%29

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM