使用SharedPreferences进行数据存储
Posted 赵一航
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SharedPreferences进行数据存储相关的知识,希望对你有一定的参考价值。
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 }
以上是关于使用SharedPreferences进行数据存储的主要内容,如果未能解决你的问题,请参考以下文章