Android ——SharedPreferences的简单封装

单例封装SharedPreferences

参数一:Context上下文
参数二:Key
参数三:Value

 SP.getInstance().PutData(BaseApplication.getContext(), "serviceId", s_id);

参数一:Context上下文
参数二:Key
参数三:默认值,例如此key没有相对应的缓存value,则取默认值作为value

String id = (String) SP.getInstance().GetData(BaseApplication.getContext(), "serviceId", null);

存储实体类和集合

存储时将其转化为json字符串保存到缓存文件中,取时,解析json字符串即可,使用起来就跟存储字符串无异

全部代码

public class SP {
    private static SP spInstant = null;
    private static final String defaultModelName = "DefaultModelName";
    private SharedPreferences preferences = BaseApplication.getContext().getSharedPreferences(defaultModelName, Context.MODE_PRIVATE);
    private SharedPreferences.Editor editor = preferences.edit();
    private SP() {

    }

    public static SP getInstance() {
        if (spInstant == null) {
            Sync();
        }
        return spInstant;
    }

    private static synchronized void Sync() {
        if (spInstant == null) {
            spInstant = new SP();
        }
    }

    /**
     * 保存List
     *
     * @param tag
     * @param datalist
     */
    public <T> void setDataList(String tag, List<T> datalist) {
        if (null == datalist || datalist.size() <= 0)
            return;
        Gson gson = new Gson();
        //转换成json数据,再保存
        String strJson = gson.toJson(datalist);
        editor.putString(tag, strJson);
        editor.commit();
    }

    /**
     * 获取List
     *
     * @param tag
     * @return
     */
    public <T> List<T> getDataList(String tag, Class<T> cls) {
        List<T> datalist=new ArrayList<T>();
        String strJson = preferences.getString(tag, null);
        if (null == strJson) {
            return null;
        }
        try {
            Gson gson = new Gson();
            JsonArray array = new JsonParser().parse(strJson).getAsJsonArray();
            for (JsonElement jsonElement : array) {
                datalist.add(gson.fromJson(jsonElement, cls));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return datalist;
    }

    public void PutData(Context context, String key, Object value) {
        PutData(context, defaultModelName, key, value);
    }

    private void PutData(Context context, String defaultModelName, String key, Object value) {
        SharedPreferences preferences = context.getSharedPreferences(defaultModelName, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        if (value instanceof Boolean) {
            editor.putBoolean(key, (Boolean) value);
        } else if (value instanceof Integer) {
            editor.putInt(key, (Integer) value);
        } else if (value instanceof Float) {
            editor.putFloat(key, (Float) value);
        } else if (value instanceof Long) {
            editor.putLong(key, (Long) value);
        } else if (value instanceof String) {
            editor.putString(key, (String) value);
        } else {
            return;
        }
        editor.apply();
    }

    public Object GetData(Context context, String key, Object defaultValue) {
        return GetData(context, defaultModelName, key, defaultValue);
    }

    private Object GetData(Context context, String defaultModelName, String key, Object defaultValue) {
        SharedPreferences preferences = context.getSharedPreferences(defaultModelName, Context.MODE_PRIVATE);
        if (defaultValue instanceof Boolean) {
            return preferences.getBoolean(key, (Boolean) defaultValue);
        } else if (defaultValue instanceof Integer) {
            return preferences.getInt(key, (Integer) defaultValue);
        } else if (defaultValue instanceof Float) {
            return preferences.getFloat(key, (Float) defaultValue);
        } else if (defaultValue instanceof Long) {
            return preferences.getLong(key, (Long) defaultValue);
        } else if (defaultValue instanceof String) {
            return preferences.getString(key, (String) defaultValue);
        } else {
            return null;
        }
    }

}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FranzLiszt1847

嘟嘟嘟嘟嘟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值