SharePreferences是一種輕量級的數(shù)據(jù)存儲方式尤误,它是以key-value的形式保存在 data/data/<packagename>/shared_prefs 下的xml文件中。通常使用它來保存應(yīng)用中的一些簡單的配置信息结缚,如用戶名损晤、密碼、自定義參數(shù)的設(shè)置等红竭。
需要注意的是沉馆,sharepreferences中的value值只能是float码党、int、long斥黑、boolean、String眉厨、StringSet 這些類型數(shù)據(jù)锌奴。
對于信息量大的數(shù)據(jù),不建議用sharepreferences來保存憾股,應(yīng)使用文件存儲或者SQLite存儲鹿蜀。
保存數(shù)據(jù)
1、 獲得SharePreferences的實例對象
//name為文件名服球,不需帶后綴名茴恰; mode為文件操作模式
SharePreferences sp = getSharePreferences(String name, int mode);
常用的文件操作模式
- MODE_PRIVATE:指定該sharepreferences中的數(shù)據(jù)只能被本應(yīng)用程序讀寫
- MODE_APPEND:該文件的內(nèi)容可以追加
2、獲取編輯器
Editor editor = sp.edit();
3斩熊、存入數(shù)據(jù)并提交
editor.putString("name", "飄渺云軒");
editor.putInt("age", 21);
...
editor.commit(); //提交修改往枣,也可使用apply()提交
需要注意的是commit()是將數(shù)據(jù)寫入內(nèi)存后同步提交到磁盤,而apply()將數(shù)據(jù)寫入內(nèi)存后會在一個新線程中異步提交到磁盤粉渠。使用commit()提交會返回一個boolean來表明是否提交成功分冈,apply()則沒有返回值。
提交數(shù)據(jù)時霸株,如果數(shù)據(jù)比較大雕沉,commit()方法會阻塞主線程造成界面卡頓;因此在不要求提交結(jié)果的情況下應(yīng)盡量使用appley()方法提交去件。
刪除數(shù)據(jù)
editor.remove(String key); //刪除一條數(shù)據(jù)
editor.clear(); //刪除所有數(shù)據(jù)
獲取數(shù)據(jù)
String name = sp.getString("name", "");
Int age = sp.getInt("age", 0);
第一個參數(shù)是key坡椒,第二個參數(shù)是缺省值,也就是默認值
注意
- 存入數(shù)據(jù)和刪除數(shù)據(jù)時尤溜,一定要在最后使用editor.commit()或editor.apply()方法提交數(shù)據(jù)
- 獲取數(shù)據(jù)的key值與存入數(shù)據(jù)的key值的數(shù)據(jù)類型要一致倔叼,否則查找不到數(shù)據(jù)
- 保存sharepreferences的key值時,應(yīng)使用final常量保存靴跛,以免存儲缀雳、刪除時寫出了。如:public static final String KEY = "name";
- 在一個頁面中梢睛,盡量不要進行多次commit()和apply()操作肥印,在不要求提交結(jié)果的情況下應(yīng)盡量使用appley()
案例
詳情請到我的GitHub上查看