SharedPreferences简介
SharedPreferences是Android平台上一个轻量级的存储类,主要用于存储一些应用程序的配置参数,例如用户名、密码、自定义参数的设置等。SharedPreferences中存储的数据是以key/value键值对的形式保存在XML文件中,该文件位于data/data//shared_prefs文件夹中。需要注意的是,SharedPreferences中的value值只能是float、int、long、boolean、String、StringSet类型数据。
使用SharedPreferences类存储数据时,首先需要通过context.getSharedPreferences(String name,int mode)获取SharedPreferences的实例对象(在Activity中可以直接使用this代表上下文,如果不是在Activity中则需要传入一个Context对象获取上下文),示例代码如下:
SharedPreferences sp = context.getSharedPreferences(String name,int mode);
上述代码中,name表示文件名,mode表示文件操作模式。
SharedPreferences 的使用
SharedPreferences提供了一系列方法由于获取应用程序中的数据(将在下面的实例程序中使用)。需要注意的是,SharedPreferences对象本身只能获取数据,并不支持数据的存储和修改。
数据的存储和修改需要通过SharedPreferences.Editor对象实现。
存入数据
使用SharedPreferences存储数据是,需要先获取SharedPreferences对象,通过该对象获取到Editor对象,然后通过Editor对象的相关方法存储数据,具体代码如下:
SharedPreferences sp = getSharedPreferences("data",MODE_PRIVATE);
//data表示文件名
Editor editor = sp.edit(); //获取编辑器
editor.putString("name","book"); //存入String类型数据
editor.putInt("age",8); //存入int类型数据
editor.commit(); //提交修改
获取数据
SharedPreferences获取数据时比较简单,只需要创建SharedPreferences对象,然后使用该对象获取相应key的值即可,具体代码如下:
SharedPreferences sp = context.getSharedPreferences();
String data = sp.getString("name",""); //获取用户名
删除数据
SharedPreferences删除数据时与存储数据类似,同样需要先获取到Editor对象,然后通过该对象删除数据,最后提交,具体代码如下:
SharedPreferences sp = context.getSharedPreferences();
Editor editor = sp.edit();
editor.remove("name"); //删除一条数据
editor.clear(); //删除所有数据
editor.commit(); //提交修改
注意!!
- SharedPreferences存入和删除数据时,一定要在最后使用editor.commit()方法提交数据。
- 获取数据的key值与存入数据的key值的数据类型要一致,否则查找不到数据。
- 保存SharedPreferences的key值时,可以用静态变量保存,以免存储、删除时写错了,如:private static final String key = “itcast”;。
示例——保存QQ号码和密码
使用SharedPreferences存储数据是一个比较独立的模块,因此,建立一个单独的类,用于实现QQ号码和密码的存储与获取功能。
public class Utils{
//保存QQ号码和登录密码到data.xml文件中
public static boolean saveUserInfo(Context context,String number,String password){
SharedPreferences sp = getSharedPreferences("data",Context.MODE_PRIVATE);
Editor edit = sp.edit();
edit.putString("userName",number);
edit.putString("pwd",password);
edit.commit();
return true;
}
//从data.xml文件中获取存储的QQ号码和密码
public static Map<String,String> getUserInfo(Context context) {
SharedPreferences sp = getSharedPreferences("data",Context.MODE_PRIVATE);
String number = sp.getString("userNmae",null);
String password = sp.getString("psw",null);
Map<String,String> userMap = new HashMap<String,String>();
userMap.put("number,number);
userMap.put("password",password);
return userMap;
}
}