#SharedPreferences 工具类分析

时间:2021-05-20 05:35:33

SharedPreferences 工具类分析

public class SpUtils {
private static SharedPreferences sp;//定义一个静态的成员变量
/**
* 写入一个boolean类型的变量在sp当中
* @param conext 上下文
* @param key 存储节点的名称
* @param value boolean值
*/
public static void putBoolean(Context conext,String key,boolean value){
if (sp!=null){ //如果sp为空的话那就创建 不为空就直接使用

//这里我分析下下面的方法中的三个参数 第一个参数是存储在SD卡中的文件名称,第二个参数是文件的读取模式 我们设置为私有模式
sp = conext.getSharedPreferences(“config”, Context.MODE_PRIVATE);
}
sp.edit().putBoolean(key, value).apply();
//这一句中推荐大家使用apply();之前的conmit()官方已经不再推荐使用
}
//读sp中的变量值
//下面的两个参数 是key 和vaule 我们的数据在sd中是以xml的形式存在的一个值对应一个value 我们取数据或者是装数据,都是根据键值对来操作的
public static boolean getBoolean(Context context,String key,boolean value){
if (sp==null){
sp = context.getSharedPreferences(“config”,context.MODE_PRIVATE);
}
return sp.getBoolean(key,false);
}
}

代码中的使用方法

下面是以checkbox的点击事件保存案例

   //获取已有的开关状态,用作显示 siv_update是checkbox的name
// 首先我们要从sd卡中的xml文件中拿到之前的是否点击的变量设置上去
boolean open_update =
SpUtils.getBoolean(this,ConstantValue.OPEN_UPDATE,false);
siv_update.setCheck(open_update);
siv_update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//如果之前是选中的 点击后变成未选中 反之可推理
boolean check = siv_update.isCheck();//获取之前的选中状态
//将原有的状态取反
Toast.makeText(SettingActivity.this,""+!check,Toast.LENGTH_SHORT).show();
siv_update.setCheck(!check);
//将取反后后的状态存储到sp中
SpUtils.putBoolean(getApplicationContext(), ConstantValue.OPEN_UPDATE,!check);
}
});