Android中存在着5種存儲數據的方法:
1、使用SharePreferences存儲數據
2、文件存儲
3、SQLite數據庫存儲
4、使用ContentProvider存儲數據
5、網絡存儲
這里只介紹SharePreferences的存儲。
SharePreferences類是一個輕量級的存儲類,特別適合用於保存軟件配置參數。使用SharedPreferences保存數據,其背后是用xml文件存放數據。在Android系統中,SharedPreferences中的信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs目錄下。這種方式主要用來存儲比較簡單的一些數據,而且是標准的Boolean、Int、Float、Long、String等類型。當你定義好SharedPreferences類存儲文件的名字后無需考慮存儲文件的后綴問題,因為Android系統會自動將你命名的文件后面加上.xml。例如:如果我的存儲數據的文件名字是"user",那么,當我使用
SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE);來存儲時,在程序中將自動生成一個名為user.xml的文件。
SharedPreferences數據的四種操作模式
-
Context.MODE_PRIVATE
-
Context.MODE_APPEND
-
Context.MODE_WORLD_READABLE
-
Context.MODE_WORLD_WRITEABLE
獲取SharedPreferences的三種方式:
android.content.SharedPreferences是一個接口,用來獲取和修改持久化存儲的數據。
1.this.getPreferences (int mode)——調用Activity對象的getPreferences()方法
通過Activity對象獲取,獲取的是本Activity私有的Preference,保存在系統中的xml形式的文件的名稱為這個Activity的名字,因此一個Activity只能有一個,屬於這個Activity。
2.this.getSharedPreferences (String name, int mode)——調用Context對象的getSharedPreferences()方法
因為Activity繼承了ContextWrapper,因此也是通過Activity對象獲取,但是屬於整個應用程序,可以有多個,以第一參數的name為文件名保存在系統中。
3.PreferenceManager.getDefaultSharedPreferences(this);
PreferenceManager的靜態函數,保存PreferenceActivity中的設置,屬於整個應用程序,但是只有一個,Android會根據包名和PreferenceActivity的布局文件來起一個名字保存。
用法
存
SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE);//user表示存儲文件的名字 Editor editor=preferences.edit(); String name="xixi"; String age="22"; editor.putString("name", name); editor.putString("age", age); editor.commit();
取
從SharedPreferences中取數據
SharedPreferences preferences=getSharedPreferences("user", Context.MODE_PRIVATE); String name=preferences.getString("name", "defaultname"); String age=preferences.getString("age", "0");
刪除
SharedPreferences pref = getSharedPreferences("user",Context.MODE_PRIVATE); Editor editor = pref.edit(); editor.remove("name"); editor.commit();
有時因為程序需要我們可以把sharedPreferences單獨寫成一個工具類:
1 /** 2 * 保存數據應用 配置的集合類 3 */ 4 public class SharedPreferencesUtil { 5 public static final String SETTING_FILE = "boxue_userInfo"; 6 7 /** 8 * 保存設置項到文件 9 */ 10 public static void saveToFile(Context context, String key, String value) { 11 SharedPreferences pref = context.getSharedPreferences(SETTING_FILE, 12 android.content.Context.MODE_PRIVATE); 13 Editor editor = pref.edit(); 14 editor.putString(key, value); 15 editor.commit(); 16 } 17 18 /** 19 * 刪除 20 */ 21 public static void deleteToFile(Context context, String key) { 22 SharedPreferences pref = context.getSharedPreferences(SETTING_FILE, 23 android.content.Context.MODE_PRIVATE); 24 Editor editor = pref.edit(); 25 editor.remove(key); 26 editor.commit(); 27 } 28 29 public static boolean isContains(Context context, String key) { 30 SharedPreferences pref = context.getSharedPreferences(SETTING_FILE, 31 android.content.Context.MODE_PRIVATE); 32 if (pref.contains(key)) { 33 return true; 34 } else { 35 return false; 36 } 37 } 38 39 /** 40 * 獲取設置項 41 */ 42 public static String getFromFile(Context context, String key) { 43 SharedPreferences pref = context.getSharedPreferences(SETTING_FILE, 44 android.content.Context.MODE_PRIVATE); 45 return pref.getString(key, ""); 46 }