SharePreference存儲
主要用于輕量級數據的存儲,Android中提供了三種用于得到SharePreference對象的方法:
1.Context類中的getSharePreference(String name, int mode)方法
- 第一個參數用于指定SharePreference文件的名稱,如果文件不存在則會創建一個,SharePreference文件都是存放在/data/data/<package name>/shared_prefs/目錄下。
- 第二個參數用于指定操作模式,主要有兩種模式:MODE_PRIVATE和MODE_MULTI_PROCESS,前者是默認操作模式,和傳入0效果是一樣的,表示只有當前的應用才可以對這個文件進行讀寫操作;后者一般用于會有多個進程中對同一個SharePreference文件進行讀寫操作
2.Activity類中的getPreferences(int mode)方法
和上一方法類似,不過只接收一個操作模式參數,自動將當前活動的類名作為SharePreference的文件名
3.PreferenceManager類中的getDefaultSharePreference(this)方法
接收一個Context參數,自動使用當前應用程序的報名作為SharePreference文件名
注:數據保存類型為xml文件,默認以map形式存儲,如:
<map>
<string name="name">David</string>
<int name="age">18</int>
</map>
數據操作模式:
- Activity.MODE_PRIVATE,//默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中,可以使用Activity.MODE_APPEND
- Activity.MODE_WORLD_READABLE,//表示當前文件可以被其他應用讀取,
- Activity.MODE_WORLD_WRITEABLE,//表示當前文件可以被其他應用寫入;
//如果希望文件被其他應用讀和寫,可以傳入: - Activity.MODE_WORLD_READABLE | Activity.MODE_WORLD_WRITEABLE
- Activity.MODE_APPEND //該模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件
得到SharePreference對象后,開始存儲數據:
- 調用SharePreference對象的edit()方法來獲取一個SharePreference.Editor對象;
- 向SharePreference.Editor對象中添加數據,比如putString、putBoolean;
- 調用commit()方法提交數據,完成數據操作。
通過SharePreference對象存儲數據:
/**
*editor定義可以單獨或者是和SharePreference一同定義
*SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
*SharedPreferences pref =getSharedPreferences("myPref", MODE_PRIVATE);
*Editor editor = pref.edit();
**/
SharedPreferences.Editor editor= getSharedPreferences("share",MODE_PRIVATE).edit();
//SharedPreferences.Editor editor=getPreferences(MODE_PRIVATE).edit();
//SharedPreferences.Editor editor= PreferenceManager.getDefaultSharedPreferences(MainActivity.this).edit();
editor.putString("name","David");
editor.putInt("age",18);
editor.commit();
獲取數據:
SharedPreferences sharedPreferences=getSharedPreferences("share",MODE_PRIVATE);
//兩個參數對應需要提取的key和默認value,若key值為null或讀取不到,則獲取默認值,當讀取值為""時,不視為null
String name=sharedPreferences.getString("name","admin");
int age=sharedPreferences.getInt("age",0);
String sex=sharedPreferences.getString("sex","男");
移除數據內容:
SharedPreferences.Editor editor=getSharedPreferences("share",MODE_PRIVATE).edit();
editor.remove("age");
editor.commit();
Editor方法:
Return | Public Methods |
---|---|
abstract void | apply()將編輯器中的首選項更改提交回正在編輯的SharedPreferences對象 |
abstract SharedPreferences.Editor | clear()在編輯器中標記以從首選項中刪除所有值 |
abstract boolean | commit()將編輯器中的首選項更改提交回正在編輯的SharedPreferences對象 |
abstract SharedPreferences.Editor | putBoolean(String key, boolean value)Set a boolean value in the preferences editor, to be written back once commit() or apply()are called. |
abstract SharedPreferences.Editor | putFloat(String key, float value)Set a float value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putInt(String key, int value)Set an int value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putLong(String key, long value)Set a long value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putString(String key, String value)Set a String value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putStringSet(String key, Set<String> values)Set a set of String values in the preferences editor, to be written back once commit() is called. |
abstract SharedPreferences.Editor | remove(String key)在編輯器中標記應該刪除優先級值,這將在調用commit()時在實際首選項中完成 |