數據存儲之SharedPreferences
- 默認存儲在/data/data/包名/shared_prefs/文件名
- 基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息等較簡單的數據類型
常用的文件的操作模式
MODE_PRIVATE: 默認的操作,表示只有當前應用程序纔可以對SharedPreferences文件讀寫。
MODE_MULTI_PROCESS 一般用於會有多個進程中對同一個SharedPreferences文件進行讀寫的情況。
實現SharedPreferences存儲的步驟
- 獲取SharedPreferences對象
- 調用SharedPreferences對象的edit()方法獲取SharedPreferences.Editor對象
- 向SharedPreferences.Editor對象中添加數據,使用putXXX()方法
- 調用commit()提交數據,完成數據存儲
添加數據的putXXX()類型方法具體有:
putString(String key, @Nullable String value)
putStringSet(String key, @Nullable Set values)
putInt(String key, int value)
putLong(String key, long value)
putFloat(String key, float value)
putBoolean(String key, boolean value)
Editor下的其他方法:
remove(String key) 移除preferences中的某一key值對應的數據
clear() 清除preferences中的所有數據
commit() 提交數據
獲取SharedPreferences對象的幾種方法
1.Context類中的getSharedPreferences()方法
//Context類中這樣定義的,傳入參數爲(文件名,操作模式)
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
return mBase.getSharedPreferences(name, mode);
}
//調用
SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE);
2.Activity類中的getPreferences()方法
//Activity類這樣定義,只需要傳入操作模式,使用這個方法會自動把當前活動的類名作爲SharedPreferences的文件名
public SharedPreferences getPreferences(int mode) {
return getSharedPreferences(getLocalClassName(), mode);
}
//調用
SharedPreferences sp=getPreferences(MODE_PRIVATE);
3.使用PreferenceManager類中的getDefaultSharedPreferences()方法
//PreferenceManager類中這樣定義,這是一個靜態方法,接收一個Context參數,
並自動把當前應用程序的包名作爲前綴來命名SharedPreferences文件
public static SharedPreferences getDefaultSharedPreferences(Context context) {
return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
getDefaultSharedPreferencesMode());
}
//調用
SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(this);
使用adb命令查看SharedPreferences文件
root@android:/data/data/com.example.datastore # cd shared_prefs
cd shared_prefs
root@android:/data/data/com.example.datastore/shared_prefs # ls
ls
config.xml
root@android:/data/data/com.example.datastore/shared_prefs # cat config.xml
nfig.xml <
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="item">SharedPreferences</string>
</map>
Editor爲SharedPreferences文件的編輯器,有以下幾種方法:
putString(String key, @Nullable String value)
putStringSet(String key, @Nullable Set values)
putInt(String key, int value)
putLong(String key, long value)
putFloat(String key, float value)
putBoolean(String key, boolean value)
remove(String key)
clear()
在Editor中標記以從首選項中刪除所有值。一旦commit被調用,唯一剩餘的首選項將是你在這個編輯器中定義的任何一個
commit()
提交Editor編輯的內容
存儲數據
使用Editor對象添加值
SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("item", data);
...
editor.commit();
讀取數據
使用sp對象來獲取值
從首選項中檢索所有值
Map<String, ?> getAll();
從首選項中檢索字符串值
@Nullable
String getString(String key, @Nullable String defValue);
從首選項中檢索一組String值
@Nullable
Set<String> getStringSet(String key, @Nullable Set<String> defValues);
從首選項中檢索一個int值
int getInt(String key, int defValue);
從偏好中檢索一個long值
long getLong(String key, long defValue);
從首選項中檢索浮點值
float getFloat(String key, float defValue);
從首選項中檢索布爾值
boolean getBoolean(String key, boolean defValue);
代碼調用
SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE);
sp.getString("item", "data is null")//key值,默認值
sp.getXXX...