使用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
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
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的布局文件来起一个名字保存。

前两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
 

用法

  存

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     }
原文地址:https://www.cnblogs.com/1925yiyi/p/7045192.html