保存數據 之 鍵值對的設置

如果有一些小數據的鍵值對需要保存,可以用SharedPreferences  這個類裏面的API。SharedPreferences 對象指向一個包含鍵值對的文件,並且提供了一些讀取和寫入鍵值對的方法。SharedPreferences 是被framework層管理的,可以是私有的,也可以被共享。

注意:SharePreferences 僅僅是操作鍵值對,不可以和Preference 混淆,Preference會創建一個設置界面,儘管它裏面還是用SharePreferences 來保存信息。想了解更多請閱讀:Preference 和Settings

處理SharedPreferences

你可以創建一個新 的SharePreferences 文件或者是獲取一個已經存在,我們可以使用下面的方法:

getSharedPreferences()  利用這個方法可以通過名稱來獲取到一個可以共享的preference 文件,名稱在第一個參數裏面指定,可以用你的activity裏面的任何一個Contextd對象

來獲取它。

getPreferences() 這個方法獲取的到時針對這個activity的共享preference 文件。因爲這個文件僅僅是針對這個activity的,所有不需要提供一個名稱。

比方說,下面的這個代碼是在一個Fragment裏面執行的,獲取了一個由字符串資源裏面的R.string.preference_file_key命名的preference 文件,設置wie私有模式,這樣這個文件就僅僅可以被你的APP訪問。

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

當命名共享的preference文件的時候,你需要使用一個在你的APP裏面唯一的字符串標示,就像"com.example.myapp.PREFERENCE_FILE_KEY"

另外,如果僅僅是針對一個activity需要共享的preference文件的時候,可以使用getPreferences()方法。

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

警告:如果創建shared preferences文件的時候使用了MODE_WORLD_READABLE or MODE_WORLD_WRITEABLE屬性,任何其他的app如果知道你的這個文件的名稱,都可以訪問你的數據。

寫數據到Shared Preferences

要往shared preferences裏面寫數據,需要調用SharedPreferences 的edit()獲取一個SharedPreferences.Editor對象。

然後用這個Editor裏面的方法來寫入數據,列入putInt()putString()。然後調用commit()保存寫入的結果。如下:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

從Shared Preferences裏面讀取數據

從一個shared preferences裏面讀取數據,可以調用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);

 

 

發佈了35 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章