SharedPreferences 简介
当我们的应用想要保存用户的一些偏好参数,比如是否自动登录,是否记住账号密码,是否在WIFI下才能联网等相关信息时,可以采用SharedPreferences来保存数据。它的保存数据主要是简单的键值对(key-value),且保存的是一个XML文件。
SharedPreferences 常用方法
public abstract boolean contains (String key)
// 功能:判断SharedPreferences是否包含特定key的数据
public abstract SharedPreferences.Editor edit ()
// 功能:返回一个Edit对象用于操作SharedPreferences
public abstract Map<String, ?> getAll ()
// 功能:获取SharedPreferences数据里全部的key-value对
getXXX(String key,XXX defvlaue)
// 功能:获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值
由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。
Editor接口的常用方法
public abstract SharedPreferences.Editor clear ()
// 功能:清空SharedPreferences里所有的数据
public abstract boolean commit ()
// 功能:当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改
public abstract SharedPreferences.Editor putXXX (String key, boolean XXX)
// 功能:向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值
public abstract SharedPreferences.Editor remove (String key)
// 功能:删除SharedPreferences里指定key对应的数据项
SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可通过下列方法进行创建:
Context.getSharedPreferences(String name.int mode)
// name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下
// mode:是指定读写方式,其值有三种,分别为:
// Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
// Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
// Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。
下面提供一个通用的ShareHelper类:
public class SharedHelper {
private Context mContext;
public SharedHelper() {
}
public SharedHelper(Context mContext) {
this.mContext = mContext;
}
// 保存数据
public void save(String key, String value) {
// 获取SharedPreferences对象
SharedPreferences sp = mContext.getSharedPreferences("mysp", Context.MODE_PRIVATE);
// 获取Editor 对象
SharedPreferences.Editor editor = sp.edit();
editor.putString(key, value);
editor.commit();
}
// 取出数据
public String get(String key) {
String value = "";
SharedPreferences sp = mContext.getSharedPreferences("mysp", Context.MODE_PRIVATE);
value = sp.getString("key", "");
return value;
}
}
参考资料: 数据存储与访问之——SharedPreferences保存用户偏好参数