它是android.content下的一个接口,官方对他的描述是这样的:用于访问和修改getSharedPreferences(String, int)返回偏好设置数据(preference data)的一个接口。对于任何一组特殊的preferences,所有的客户端共享一个此类单独的实例。修改Preferences必须通过一个SharedPreferences.Editor对象,以确保当他们提交存储数据的操作时,preference值保持一致的状态。最后再提交数据的时候必须使用commit()方法将数据完全写入。
它的优点在于会对一些特殊的字符进行分辨,达到准确读取的目的,传统上我们选择以特殊分隔符来分割要存储的数据,这样虽然会简单点,但是如果用户舌设置的数据同样包含这个分隔符,那么将造成读取失误。
这里我只介绍关键代码,整个工程可以在该链接下载:http://files.cnblogs.com/files/ghylzwsb/shareprefenrence.rar
1、使用saveUserInfo()方法来存储用户的数据:
1 /** 2 * 保存用户名 密码的业务方法 3 * @param context 上下文 4 * @param username 用户名 5 * @param pas 密码 6 * @return true 保存成功 false 保存失败 7 */ 8 public static void saveUserInfo(Context context,String username,String pas){ 9 /** 10 * SharedPreferences将用户的数据存储到该包下的shared_prefs/config.xml文件中, 11 * 并且设置该文件的读取方式为私有,即只有该软件自身可以访问该文件 12 */ 13 SharedPreferences sPreferences=context.getSharedPreferences("config", context.MODE_PRIVATE); 14 Editor editor=sPreferences.edit(); 15 //当然sharepreference会对一些特殊的字符进行转义,使得读取的时候更加准确 16 editor.putString("username", username); 17 editor.putString("password", pas); 18 //这里我们输入一些特殊的字符来实验效果 19 editor.putString("specialtext", "hajsdh><?//"); 20 editor.putBoolean("or", true); 21 editor.putInt("int", 47); 22 //切记最后要使用commit方法将数据写入文件 23 editor.commit(); 24 }
2、当用户重新打开软件时使用如下代码将其显示出来:
1 //显示用户此前录入的数据 2 SharedPreferences sPreferences=getSharedPreferences("config", MODE_PRIVATE); 3 String username=sPreferences.getString("username", ""); 4 String password =sPreferences.getString("password", ""); 5 ed_username.setText(username); 6 ed_pasw.setText(password);
3、软件运行之后我们可以发现config.xml文件的内容如下:
<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?> <map> <string name="specialtext">hajsdh><?//</string> <string name="username">dsa</string> <string name="password">dasdasd</string> <int name="int" value="47" /> <boolean name="or" value="true" /> </map>
我们看到,在xml文件中“><”被转以为“><”,这也为数据的准确读取做好了规范。
以下是程序运行的结果:
至此SharedPreferences的应用结束。在以后的开发过程中,应当多家注意使用官方推荐的API,这会对数据的安全以及数据的完整性有所保障。
2016-04-16
BOB
使用 SharedPreferences 实现数据的存储和读取
原文:http://www.cnblogs.com/ghylzwsb/p/5399437.html