SharedPreferences是Android的一个轻量级存储工具,采用的存储结构是Key-Value的键值对方式,类似于Java的Properties类,二者都是把Key-Value的键值对保存在配置文件中。不同的是Properties的文件内容是Key=Value这样的形式,而SharedPreferences的存储介质是符合XML规范的配置文件。保存Sharedreferences键值对信息的文件路径是/data/data/应用包名/shared_prefs/文件名.xml。
下面是一个共享参数的XML文件示例:
<?xml version="1.0" encoding="utf-8"?> <map> <string name="name">Mr Lee</string> <int name="age" value="20"/> <boolean name="married" value="true"/> <float name="weight" value="100.0"/> </map>
基于XML格式的特点,SharedPreferences主要适用于如下场合:
(1)简单且孤立的数据。若是复杂且相互间有关的数据,则要保存在数据库中。
(2)文本形式的数据。若是二进制数据,则要保存在文件中。
(3)需要持久化存储的数据。在App退出后再次启动时,之前保存的数据仍然有效。实际开发中,共享参数经常存储的数据有App的个性化配置信息、用户使用App的行为信息、临时需要保存的片段信息等。
Sharedreferences 对数据的存储和读取操作类似于Map,也有put 函数用于存储数据、get函数用于读取数据。在使用共享参数之前,要先调用getSharedPreferences 函数声明文件名与操作模式,示例代码如下:
//从share.xml中获取共享参数对象 SharedPreferences shared = getSharedPreferences("share", MODE_PRIVATE);
getSharedPreferences方法的第一个参数是文件名,上面的 share 表示当前使用的共享参数文件名是share.xml;第二个参数是操作模式,一般都填MODE_PRIVATE,表示私有模式。共享参数存储数据要借助于Editor类,示例代码如下:
//从share.xml中获取共享参数对象 SharedPreferences shared = getSharedPreferences("share", MODE_PRIVATE); SharedPreferences.Editor editor = shared.edit(); // 获得编辑器的对象 editor.putString("name", "MrLee"); // 添加一个名叫name的字符串参数 editor.putInt("age", 30); // 添加一个名叫age的整型参数 editor.putBoolean("married", true); // 添加-个名叫married 的布尔型参数 editor.putFloat("weight", 100f); // 添加一个名叫weight的浮点数参数 editor.commit(); // 提交编辑器中的修改
共享参数读取数据相对简单,直接使用对象即可完成数据读取方法的调用,注意get方法的第二个参数表示默认值,示例代码如下:
String name = shared.getString("name",""); //从共享参数中获得名叫name的字符串 int age = shared.getInt("age",0); //从共享参数中获得名叫age的整型数 boolean mrried = shared.getBoolean("married",false); //从共享参数中获得名叫maried的布尔数 float weight= shared.getFloat("weight",0); // 从共享参数中获得名叫weight的浮点数