SharedPreferencesUtils,支持基本数据类型和任意对象

是SharedPreferences的封装,用它可以简单快速地存储一些数据。


关于任意对象的存储是采用对象转json来存储,json转对象来获取,如果想自己处理json,也可以调用工具类的getObjectString方法


代码

/***
 * 1.支持通用基本数据类型
 * 2.支持任意对象,需要Gson依赖 compile 'com.google.code.gson:gson:2.6.2'
 * 3.注意:转型需要自己转(为了不指定泛型)
 */
public class SharedPreferencesUtils {
    public void put(Context context, String fileName, String key, Object object) {
        String type = object.getClass().getSimpleName();
        SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();

        if ("String".equals(type)) {
            editor.putString(key, (String) object);
        } else if ("Integer".equals(type)) {
            editor.putInt(key, (Integer) object);
        } else if ("Boolean".equals(type)) {
            editor.putBoolean(key, (Boolean) object);
        } else if ("Float".equals(type)) {
            editor.putFloat(key, (Float) object);
        } else if ("Long".equals(type)) {
            editor.putLong(key, (Long) object);
        } else {
            editor.putString(key, (new Gson()).toJson(object));
        }

        editor.apply();
    }

    public Object get(Context context, String fileName, String key, Object defaultObject) {
        String type = defaultObject.getClass().getSimpleName();
        SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);

        if ("String".equals(type)) {
            return sp.getString(key, (String) defaultObject);
        } else if ("Integer".equals(type)) {
            return sp.getInt(key, (Integer) defaultObject);
        } else if ("Boolean".equals(type)) {
            return sp.getBoolean(key, (Boolean) defaultObject);
        } else if ("Float".equals(type)) {
            return sp.getFloat(key, (Float) defaultObject);
        } else if ("Long".equals(type)) {
            return sp.getLong(key, (Long) defaultObject);
        }
        return null;
    }

    public void putObject(Context context, String fileName, String key, Object object) {
        SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(key, (new Gson()).toJson(object));
        editor.apply();
    }

    public Object getObject(Context context, String fileName, String key, Class clz) {
        SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
        Gson gson = new Gson();
        return gson.fromJson(sp.getString(key, ""), clz);
    }

    public String getObjectString(Context context, String fileName, String key) {
        SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
        return sp.getString(key, "");
    }
}

你可能感兴趣的:(Android)