sharedPreferences工具类封装

sharedPreferences是经常用到的安卓数据储存方式,相对sqlite更为轻量级。

关于sharedPreferences的用法简单介绍下:


以下是对数据的写入操作

SharedPreferences sp = getSharedPreferences("MyDB", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
//key:data   value:myData
editor.putString("data","myData");
editor.apply();

editor的apply()方法和commit()方法的区别

editor.commit()有返回值,成功返回 true ,失败则返回 false 。commit提交是同步的,apply方法为异步写入磁盘。所以如果在使用中不需要commit的返回值的话,从效率上推荐使用apply方法。

以下是对数据的读取操作

SharedPreferences sp = getSharedPreferences("MyDB", Context.MODE_PRIVATE);
String getData = sp.getString("data","");


下面我对sharedPreferences做了一个封装,方便使用。此工具类包含getInstance()方法,使用单例模式创建实例,不用每次使用sharedPreferences都创建一个新的对象。

public class SharedPreferencesUtil {
    private SharedPreferences sp;
    private SharedPreferences.Editor editor;
    private static SharedPreferencesUtil mInstance = null;
    private static String SP_NAME = "My_db";

    public SharedPreferencesUtil(Context context) {
        setContext(context);
    }

    public void setContext(Context context){
        if (context == null){
            return;
        }
        sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
        editor = sp.edit();
    }

    public static SharedPreferencesUtil getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new SharedPreferencesUtil(context);
        }
        return mInstance;
    }

    //获取key的value值
    public String loadKey(String key) {
        return sp.getString(key, "");
    }

    //保存key-value对
    public void saveKey(String key, String value) {
        editor.putString(key, value);
        editor.apply();
    }

    //移除key-value对
    public void removeKey(String key) {
        editor.remove(key);
        editor.apply();
    }

    //清除所有的key-value对
    public void clearKeys() {
        editor.clear();
        editor.apply();
    }

    //获取boolean类型的value值
    public boolean loadBooleanKey(String key) {
        return sp.getBoolean(key, true);
    }

    //保存boolean类型的value值
    public void saveBooleanKey(String key, boolean value) {
        editor.putBoolean(key, value);
        editor.apply();
    }

    //获取int类型的value值
    public int loadIntKey(String key) {
        return sp.getInt(key, 0);
    }

    //保存int类型的value值
    public void saveIntKey(String key, int value) {
        editor.putInt(key, value);
        editor.apply();
    }

    //保存float类型的value值
    public void saveFloatKey(String key, float value) {
        editor.putFloat(key, value);
        editor.apply();
    }

    //获取float类型的value值
    public float loadFloatKey(String key) {
        return sp.getFloat(key, 0);
    }


    //获取long类型的value值
    public long loadLongKey(String key) {
        return sp.getLong(key, 0);
    }

    //保存long类型的value值
    public void saveLongKey(String key, long value) {
        editor.putLong(key, value);
        editor.apply();
    }

    //SharedPreferences实例是否包含key
    public boolean isContains(String key) {
        return sp.contains(key);
    }
}

引用此工具类的示例,需要传入一个context:

SharedPreferencesUtil sp = SharedPreferencesUtil.getInstance(getBaseContext());
                sp.saveKey("key","value");//存储
                sp.loadKey("key");//读取






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值