Android SharedPreferences单例工具类

前言

android中我们经常用SharedPreferences来存储轻量级数据。

代码

​
public class SharedPreferencesUtils {
    private SharedPreferences share;
    private SharedPreferences.Editor editor;
    private String SHARED_NAME = "spname";//sp的文件名 自定义


//MyAPP.getContext() 是你的Application里面的一个Context
private SharedPreferencesUtils() {
    share = MyApp.getContext().getSharedPreferences(SHARED_NAME, Context.MODE_PRIVATE);
    editor = share.edit();
}

/** 
* 单例模式
*/
private static SharedPreferencesUtils instance;//单例模式 双重检查锁定
public static SharedPreferencesUtils getInstance() {
    if (instance == null) {
        synchronized (SharedPreferencesUtils.class) {
            if (instance == null) {
                instance = new SharedPreferencesUtils();
            }
        }
    }
    return instance;
}

​

/**
 * ------- Int ---------
 */
public void putInt(String spName, int value) {
    editor.putInt(spName, value);
    editor.commit();
}

public int getInt(String spName, int defaultvalue) {
    return share.getInt(spName, defaultvalue);
}

/**
 * ------- String ---------
 */
public void putString(String spName, String value) {
    editor.putString(spName, value);
    editor.commit();
}

public String getString(String spName, String defaultvalue) {
    return share.getString(spName, defaultvalue);
}

public String getString(String spName) {
    return share.getString(spName, "");
}


/**
 * ------- boolean ---------
 */
public void putBoolean(String key, boolean value) {
    editor.putBoolean(key, value);
    editor.commit();
}

public boolean getBoolean(String key, boolean defValue) {
    return share.getBoolean(key, defValue);
}

/**
 * ------- float ---------
 */
public void putFloat(String key, float value) {
    editor.putFloat(key, value);
    editor.commit();
}

public float getFloat(String key, float defValue) {
    return share.getFloat(key, defValue);
}


/**
 * ------- long ---------
 */
public void putLong(String key, long value) {
    editor.putLong(key, value);
    editor.commit();
}

public long getLong(String key, long defValue) {
    return share.getLong(key, defValue);
}

/**
 * 清空SP里所有数据 谨慎调用
 */
public void clear() {
    editor.clear();//清空
    editor.commit();//提交
}

/**
 * 删除SP里指定key对应的数据项
 *
 * @param key
 */
public void remove(String key) {
    editor.remove(key);//删除掉指定的值
    editor.commit();//提交
}

/**
 * 查看sp文件里面是否存在此 key
 *
 * @param key
 * @return
 */
public boolean contains(String key) {
    return share.contains(key);
}
//建议 所有的Key 以为常量的形式保存在此类里面

public static final String USER_NAME = "name";//例如

}

 

使用

写入:
SharedPreferencesUtils.getInstance().putString(SharedPreferencesUtils.USER_NAME, "abcd");
取出:
SharedPreferencesUtils.getInstance().getString(SharedPreferencesUtils.USER_NAME);
SharedPreferencesUtils.getInstance().getString(SharedPreferencesUtils.USER_NAME,"1234");//如果不存在此Key,就返回1234

说明

1.个人建议写成单例模式使用,其它的同步写入和异步写入就不多说了,一个从commit()同步提交写入,一个是apply()异步提交。如果您要求实时性高的读写,建议勇commit,如果是一般使用情况,就按照Android推荐的使用apply 异步提交吧。

2.Key建议已常量的形式保存,方便自己查看导入有那些Key存在sp文件里面,当然,也可以通过root之后的手机,查看到data文件夹下面的配置.xml文件看到。

3.建议进行加密处理,在写入的时候。明文存入的话,拥有root权限的手机可以查看到你sp文件里面的value。

4.单例模式可以改成静态内部类单例模式。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值