數據存儲之SharedPreference

數據存儲之SharedPreferences

  • 默認存儲在/data/data/包名/shared_prefs/文件名
  • 基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息等較簡單的數據類型

常用的文件的操作模式

MODE_PRIVATE: 默認的操作,表示只有當前應用程序纔可以對SharedPreferences文件讀寫。

MODE_MULTI_PROCESS 一般用於會有多個進程中對同一個SharedPreferences文件進行讀寫的情況。


實現SharedPreferences存儲的步驟

  1. 獲取SharedPreferences對象
  2. 調用SharedPreferences對象的edit()方法獲取SharedPreferences.Editor對象
  3. 向SharedPreferences.Editor對象中添加數據,使用putXXX()方法
  4. 調用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...
發佈了36 篇原創文章 · 獲贊 20 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章