Android SharedPreferences儲存詳解
阿新 • • 發佈:2018-12-19
什麼是SharedPreferences儲存
- 一種輕量級的資料儲存方式
- 類似於我們常用的ini檔案,用來儲存應用程式的一些屬 性設定、較簡單的引數設定。
- 儲存現場:儲存使用者所作的修改或者自定義引數設定, 當再次啟動程式後回覆上次退出時的狀態。
- 將NVP(Name/Value Pair,名稱/值對)儲存在Android 的檔案系統中(XML檔案),完全遮蔽的對檔案系統的 操作過程。
- 開發人員僅是通過呼叫SharedPreferences的API對NVP 進行儲存和讀取
- 除資料儲存,還提供資料共享功能。
- 主要支援3種資料訪問模式(讀寫許可權)
• 私有(MODE_PRIVATE):僅建立程式可讀、寫
• 全域性讀(MODE_WORLD_READABLE)
程式碼demo
public static final String PREFERENCE_PACKAGE ="edu.hrbeu.SimplePreferenceDemo";
public static int MODE = Context.MODE_WORLD_READABLE +Context.MODE_WORLD_WRITEABLE;
public static final String PREFERENCE_NAME = "SaveSetting" ;
public void onCreate(Bundle savedInstanceState) {
Context c = null;
try {
//獲取SimplePreferenceDemo示例的Context
c = this.createPackageContext(PREFERENCE_PACKAGE,
Context.CONTEXT_IGNORE_SECURITY);
}
catch (NameNotFoundException e) {e.printStackTrace();}
//將正確的SharedPreferences名稱傳遞給函式
SharedPreferences sharedPreferences =
c.getSharedPreferences( PREFERENCE_NAME, MODE );
//讀取NVP
String name = sharedPreferences.getString("Name","Tom");
int age = sharedPreferences.getInt("Age", 20);
float height = sharedPreferences.getFloat("Height",);
}
使用方法
1. 定義訪問模式
public static int MODE = MODE_PRIVATE
//定義為私有模式
public static int MODE = Context.MODE_WORLD_READABLE +
Context.MODE_WORLD_WRITEABLE
//訪問模式可組合:既可以全域性讀,也可以全域性寫,將兩種模式組合(+號或|號) 成下面的方式:
2. 定義SharedPreferences的名稱
- 該名稱與Android檔案系統中儲存的XML檔案同名。
- (儲存在:/data/data/<應用名>/shared_prefs/)
- 相同名稱的NVP內容,都會儲存在同一個檔案中
public static final String PREFERENCE_NAME = "SaveSetting";
3. 建立SharedPreferences物件
將訪問模式和名稱作為引數,傳遞到getSharedPreferences()函式,並獲得SharedPreferences物件
SharedPreferences sharedPreferences =
getSharedPreferences ( PREFERENCE_NAME, MODE );
4.儲存和修改
- 通過SharedPreferences.Editor類進行修改
- 呼叫commit()函式儲存修改內容 – 支援資料型別:整型、 布林型、 浮點型和長整型等
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("Name", "Tom");
editor.putInt("Age", 20);
editor.putFloat("Height", (float)163.00 );
editor.commit();
5.讀取資料
- 通過get()函式獲取NVP – 第1個引數是NVP的名稱(Name) – 第2個引數是在無法獲取到數值的時候使用的預設值
SharedPreferences sharedPreferences =
getSharedPreferences(PREFERENCE_NAME, MODE);
String name = sharedPreferences.getString("Name","Default Name");
int age = sharedPreferences.getInt("Age", 20);
6.資料儲存位置
在android studio 下方的logcat欄的最右邊有一個Device File Explorer可以檢視 虛擬機器的檔案
檔案儲存在以下目錄
/data/data/<package name>/shared_prefs/
7. 共享條件
- 共享者需要將SharedPreferences的訪問模式設定為全域性讀或 全域性寫
- 訪問者需要知道共享者的包名稱和SharedPreferences的名稱, 以通過Context獲得SharedPreferences物件
- 訪問者需要確切知道每個資料的名稱和資料型別,用以正確 讀取資料