Android培訓—保存鍵-值集

如果你有一個相對較小的要保存的鍵-值對的集合,那麼就應該使用SharePreferences APIs。

 

SharePreferences對象指向一個包含鍵-值對的文件,並且提供簡單的讀寫方法。每個SharePreferences文件是由框架來管理的,並可以是私有或共享的。

 

本節課向你講述如何使用SharePreferences APIs來保存和獲取簡單的值。

 

註意:SharedPreferences APIs隻是用於讀寫鍵-值對,你不能夠把它們跟Preference APIs混淆,Preference APIs用於幫助你構建應用程序設置的的用戶界面(盡管它們使用SharePreference作為保存應用程序設置的實現)。有關使用Preference APIs的更多信息,請看Setting指南。

 

獲得對SharedPreferences的處理

 

你可以創建一個新的共享偏好文件或調用以下兩個方法之一來訪問一個既存的偏好文件:

 

getSharedPreferences() — 如果你需要由名稱來標識的多個共享偏好文件,文件的名稱用該方法的第一個參數來指定。你可以在你的應用程序中調用這個來自Context對象的方法。

 

getPreferences() — 如果你隻是使用一個用於特定Activity的共享偏好文件,那麼你可以使用這個來自Activity的方法。

 

例如,下列代碼要一個Fragment內部來執行。它會訪問由資源字符串R.string.preference_file_key所標識的那個共享偏好文件,並且使用私有模式來打開該文件,因此該文件隻能由你的應用程序來訪問。

 

Context context = getActivity(); 

 

SharedPreferences sharedPref = context.getSharedPreferences(         

 

getString(R.string.preference_file_key), Context.MODE_PRIVATE);

 

當給你的共享偏好文件命名時,你應該使用對你的應用程序來說是唯一標識的名稱,如“com.example.myapp.PREFERENCE_FILE_KEY”

 

另外,如果你隻需要特定Activity的共享偏好文件,你可以使用getPreferences()方法:

 

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

 

警告:如果你使用MODE_WORD_READABLE或MODE_WORLD_WRITEABLE來創建共享偏好文件,那麼其他知道該文件標識的應用程序也可以訪問你的數據。

 

寫入共享偏好文件

 

要向一個共享偏好文件中寫入,就要通過調用SharedPreferences上的edit()方法來創建一個SharedPreferences.Editor對象。

 

用諸如putInt()和putString()方法把你想要寫入的鍵和值傳遞給SharedPreferences對象。然後調用commit()方法保存改變。例如:

 

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 

SharedPreferences.Editor editor = sharedPref.edit(); 

editor.putInt(getString(R.string.saved_high_score), newHighScore); 

editor.commit();

 

從共享偏好文件中讀取

 

要從共享偏好文件中獲取值,就要調用諸如getInt()和getString()方法,並給這些方法提供你想要獲取值的鍵名,以及如果鍵名不存在時要返回的默認值。例如:

 

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 

int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 

long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

 

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *