一:SharedPreferences
它是一個輕量級的存儲類,特別適合用于保存軟件配置參數(shù)。使用SharedPreferences保存數(shù)據(jù),其背后是用xml文件存放數(shù)據(jù)(key - value),文件存放在/data/data/<package name>/shared_prefs目錄下
Android 中得到SharedPreferences方法有三種。
1,Context getSharedPreferences(String name , int mode);
常用方法,可以自己設(shè)置SharedPreferences 的name,調(diào)用Context對象的getSharedPreferences()方法獲得的SharedPreferences對象可以被同一應(yīng)用程序下的其他組件共享。
例如:
SharedPreferences prefs= getSharedPreferences("MySp",MODE_PRIVATE) ;
//SharePreferences本身不支持存儲和修改,需要通過Editor對象來進(jìn)行操作
//edit 是用于數(shù)據(jù)的添加,刪除,修改和查詢操作
prefs.edit().putInt("age", 20);
prefs.edit().putString("name", "Tom");
prefs.edit().apply();
2,Activity 的方法
Activity的 getPreferences(int mode)
方法創(chuàng)建的SharedPreferences
的文件名稱為:getLocalClassName.xml
該名稱為包含本地包名的名字。調(diào)用Activity對象的getPreferences()方法獲得的SharedPreferences對象只能在該Activity中使用。
3,PreferenceManager 的方法
PreferenceManager.getDefaultSharedPreferences(Context context)
方法是使用 包名+"_preference"
作為存儲文件名源碼感興趣的可以自己去看。最終還是使用的Context的方法。
注:每個應(yīng)用都有一個默認(rèn)的配置文件preferences.xml,使用getDefaultSharedPreferences獲取。
二:SharedPreferences基本用法
1,MODE
- MODE_PRIVATE:則該配置文件只能被自己的應(yīng)用程序訪問。(默認(rèn),也是常用的,權(quán)限控制)在該模式下,寫入的內(nèi)容會覆蓋原文件的內(nèi)容。
- MODE_APPEND:會檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件.。(主要用于存儲文件時的選項)
2,增刪改操作
//打開Preferences,名稱為 MyPf ,如果存在則打開它,否則創(chuàng)建新的Preferences
SharedPreferences pf = getSharedPreferences("MyPf", MODE_PRIVATE);
//每次調(diào)用.edit() 都會new一個新的Editor
SharedPreferences.Editor editor = prefs.edit();
//增加一個 key:age value:20 的數(shù)據(jù)
editor.putInt("age", 20);
editor.apply();//提交操作也可以用 commit()
//刪除 需要傳入key
editor.remove("age");
editor.apply();
//修改 key:需要修改的key值 ,value:修改的值
editor.putInt("age", 10);
editor.apply();
//查詢 第一個參數(shù):key 第二個參數(shù):默認(rèn)值(查詢不到就返回該值)
int getAge = pf.getInt("age", 30);
//清除所有數(shù)據(jù)
editor.clear();
editor.apply();
3,apply() 和 commit() 提交方式的區(qū)別
commit:commit是同步的提交到硬件磁盤。并且有返回值boolean,可以判斷該操作是否成功!
apply() :異步提交,比較高效,AS也推薦使用。如果不需要返回值的話,推薦使用!