Android中SharedPreferences存儲數據

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()時在實際首選項中完成
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容