一 SharedPreferences类概述

在Android开发中,经常需要将少量简单类型数据保存在本地,如:用户设置。这些需要保存的数据可能一两个字符串,像这样的数据一般选择使用SharedPreferences来保存。SharedPreferences是一个轻量级的存储类,特别适合用于保存软件配置参数。(是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下)SharedPreferences可以保存的数据类型有:int、boolean、float、long、String、StringSet。

二 SharedPreferences使用

1 使用SharedPreferences保存key-value对

步骤1
使用 Activity 类的 getSharedPreferences 方法获得 SharedPreferences对 象,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称(格式为xml文件),如果指定的文件不存在则会创建一个!!!,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。

步骤2
使用 SharedPreferences 接口的 edit 获得 SharedPreferences.Editor 对象

步骤3
通过 SharedPreferences.Editor 接口的 putXXX 方法保存 key-valu 对 其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。 putString(String key, String value)//写入String类型的数据

步骤4
通过SharedPreferences.Editor接口的commit方法保存key-value对 commit方法相当于数据库事务中的提交操作。

使用SharedPreferences保存key-value对的代码如下:

SharedPreferences sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);  
Editor editor = sharedPreferences.edit();//获取编辑器
editor.putString("name", "小明");
editor.putInt("age", 24);
editor.commit();//提交修改

生成的test.xml文件内容如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
		 <string name="name">小明</string>
		<int name="age" value="24" />
</map>

例如:

// 获取 名字为 AlarmShutdown.xml文件 ,并写入 LAST_ALARM_TIME 的数值,设置为 timer
    SharedPreferences pre = context.getSharedPreferences("AlarmShutdown", context.MODE_PRIVATE);
    SharedPreferences.Editor presEditor = pre.edit();
    presEditor.putString(LAST_ALARM_TIME,timer);
    presEditor.commit();
2 使用SharedPreferences读取key-value对

步骤1
使用Activity类的getSharedPreferences方法获得SharedPreferences对象

SharedPreferences sharedPreferences= getSharedPreferences("test",  Activity.MODE_PRIVATE);

步骤2
通过SharedPreferences对象的getXXX方法获取数据 ,例如使用getString方法获得value,注意第2个参数是value的默认值 String name =sharedPreferences.getString(“name”, “”); 或 int age =sharedPreferences.getInt(“age”, 0);

使用SharedPreferences读取key-value对的代码如下:

SharedPreferences sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);
 String name = sharedPreferences.getString("name", ""); //getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
 int age = sharedPreferences.getInt("age", 1);//读取age 没有的话默认设置为1

例如:

//获取 AlarmShutdown.xml文件
 SharedPreferences pre = context.getSharedPreferences("AlarmShutdown", context.MODE_PRIVATE);
 String ret = pre.getString(LAST_ALARM_TIME,"08:00");//获取LAST_ALARM_TIME值,没有的话默认设置为08:00

注意:
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.

Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取

Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.