一、前言
定义:SharedPreferences是一个轻量级存储类,类似于Map集合,将数据以键值对的形式保存至xml文件中,可以被同一个应用共享访问。简单一点来说,SharedPreferences就是一个键值对对象,存放在对应文件名的xml中。
应用场景:许多软件都会有配置信息,而配置信息一般都不放在数据库中。在所有应用程序中,都必然涉及数据的交互。有些时候,应用程序有少量的数据需要保存,并且这些数据的格式很简单。比如:软件设置、用户账户设置,用户习惯设置等,这个时候就可以用到SharedPreferences。
如:在Windows 中采用ini文件存储,在java se应用中采用properties属性文件存储。在Android则采用SharedPreference类将数据存入到xml文件中。
二、使用方式
- 得到SharedPreference对象;2.操作文件;3.读取键值对
1.得到SharedPreference对象
因为SharedPreferences本身是一个接口,程序无法直接创建实例,只能通过context提供的getSharedPreferences()方法来获取实例
SharedPreferences sp = context.getSharedPreferences(
Constants.PREFERENCES_GLOBAL, Context.MODE_PRIVATE);
//参数name:存储键值对(key-value)的文件的名称,不加后缀;
//参数mode:指定文件操作模式,共有4种操作方式。
2.操作SharedPreferences对象
SharedPreferences对象只能获取数据,如果需要操作或者存储数据还需要用到SharedPreferences的edit()方法来操作
3.操作Edit对象
三、操作实战
场景:在登录界面存储用户名
/**
* 存储用户名
*/
public synchronized static void setUsername(Context context, String username) {
SharedPreferences sp = context.getSharedPreferences(
Constants.PREFERENCES_GLOBAL, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putString(Constants.PREFERENCES_GLOBAL_USERNAME, username);
edit.commit();
}
public synchronized static String getUsername(Context context) {
if (null != context) {
SharedPreferences sp = context.getSharedPreferences(
Constants.PREFERENCES_GLOBAL, Context.MODE_PRIVATE);
return sp.getString(Constants.PREFERENCES_GLOBAL_USERNAME, "");
} else {
return "";
}
}
//Activity中
AppGlobalInfo.setUsername(ContextUtils.getInstance().getContext(), response.body().oid_oper);
mAccount.oid_toper = AppGlobalInfo.getUsername(mContext);