標籤:
------------------------------------------SharedPreferences儲存--------------------------------------------
SharedPreferences 使用索引值對方式來儲存資料的。當儲存一條資料的時候,需要給這條資料提供一個對應的鍵,這樣在讀取資料的時候就可以通過這個鍵把相應的值取出。
SharedPreferences 支援多種不同資料類型的儲存,可以按照需要取出數值型,或者字元型的資料。
-----------------------------------------擷取SharedPreferences對象-----------------------------------------
要想使用 SharedPreferences 來儲存資料,首先要擷取到 SharedPreferences 對象。Android 主要提供了三種方法來得到 SharedPreferences 對象。
1. Context 類中的 getSharedPreferences() 方法
此方法接受兩個參數,第一個參數用於指定 SharedPreferences 檔案的名稱,如果指定的檔案不存在則會建立一個。
SharedPreferences 檔案都是存放在 /data/data/<包名>/shared_prefs/ 目錄下的。
第二個參數用於指定操作模式,主要為 MODE_PRIVATE(預設操作模式) 和 MODE_MULTI_PROCESS(多進程讀寫) 。
2. Activity 類中的 getPreferences() 方法
這個方法和 Context 中的 getSharedPreferences() 方法類似,不過它只接收一個操作模式參數,使用這個方法時會自動將當前活動的類名作為 SharedPreferences 的檔案名稱。
3. PreferenceManager 類中的 getDefaultSharedPreferences() 方法
這是一個靜態方法,它接收一個 Context 參數,並自動使用當前應用程式的包名作為首碼來命名 SharedPreferences 檔案。
得到了 SharedPreferences 對象之後,就可以開始向 SharedPreferences 檔案中儲存資料了。
---------------------------------------將資料存放區到SharePreferences中--------------------------------------
使用 SharedPreferences 對象儲存資料:
1. 調用 SharedPreferences 對象的 edit() 方法來擷取一個 SharePreferences.Editor 對象。
2. 向 SharedPreferences.Editor 對象中添加資料,如果添加一個字串則使用 putString() 方法,以此類推。
3. 調用 commit() 方法將添加的資料提交,從而完成資料存放區操作。
將資料存放區到 SharedPreferences 檔案中:
public void onClick(View v) { //擷取 SharedPreferences 對象 SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE); //擷取 SharedPreferences.Editor 對象 SharedPreferences.Editor editor = shared.edit(); //以索引值對方式傳入資料 editor.putString("name", "Jay Chou"); editor.putInt("age", 37); editor.putBoolean("married", true); //提交資料 editor.commit(); }
最終得到的 data.xml 檔案內容:
<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?><map> <string name="name">Jay Chou</string> <int name="age" value="37" /> <boolean name="married" value="true" /></map>
可以看到所有的資料都已經成功儲存下來了,並且SharedPreferences 檔案是使用XML格式來對資料進行管理的。
注意:如果要清除 XML 中的所有資料,使用 SharedPreferences.Editor 對象的 clear() 方法,就能夠將 SharedPreferences 檔案中的資料全部清除。
---------------------------------------從SharePreferences中讀取資料--------------------------------------
相比從 SharedPreferences 檔案中隱藏檔,讀取檔案顯得更加簡單。SharedPreferences 對象中提供了一系列的 get 方法用於對儲存的資料進行讀取,每種 get 方法都對應了 SharedPreferences.Editor 中的一種 put 方法。
這些 get 方法都接收兩個參數,第一個參數是鍵,傳入儲存資料時使用的鍵就可以得到相應的值了,第二個參數是預設值,即表示當傳入的鍵找不到對應的值時,會以什麼樣的預設值進行返回。
擷取 SharedPreferences 檔案資料,並列印到控制台:
public void onClick(View v) { //擷取SharedPreferences對象 SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE); //擷取xml資料 String name = shared.getString("name", "null"); int age = shared.getInt("age", 0); boolean married = shared.getBoolean("married", false); //擷取不存在的資料 String hobby = shared.getString("hobby", "unknown"); //列印日誌記錄 Log.d("woider", "name: " + name); Log.d("woider", "age: " + age); Log.d("woider", "married: " + married); Log.d("woider", "hobby: " + hobby); }
日誌:
Android 資料存放區之 SharedPreferences儲存