SharePrefences的简单封装

2018-08-20  本文已影响0人  耀东wang

模板如下:

/**
 * Created by SerryWang
 * on 2018/8/20
 */

public class SharePref {
    
    public static final String FILE_NAME = "share_data";
    /**
     *
     * @param context
     * @param key
     * @param object
     */
    public static void put(Context context, String key, Object object){
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);
        Editor edit = sp.edit();
        if(object instanceof String){
            edit.putString(key,(String)object);
        }else if(object instanceof Integer){
            edit.putInt(key,(Integer)object);
        }else if(object instanceof Boolean){
            edit.putBoolean(key,(Boolean)object);
        }else if(object instanceof Float){
            edit.putFloat(key,(Float)object);
        }else if(object instanceof Long){
            edit.putLong(key,(Long)object);
        }else{
            edit.putString(key,object.toString());
        }
        edit.apply();
    }

    /**
     * 根据默认值得到类型
     * @param context
     * @param key
     * @param defaultObject
     */
    public static Object get(Context context,String key,Object defaultObject){
        SharedPreferences sharedPreferences = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);
        if(defaultObject instanceof String){
            return sharedPreferences.getString(key,(String) defaultObject);
        }else if(defaultObject instanceof Integer){
            return sharedPreferences.getInt(key,(Integer)defaultObject);
        }else if(defaultObject instanceof Boolean){
            return sharedPreferences.getBoolean(key,(Boolean)defaultObject);
        }else if(defaultObject instanceof Float){
            return sharedPreferences.getFloat(key,(Float)defaultObject);
        }else if(defaultObject instanceof Long){
            return sharedPreferences.getLong(key,(Long)defaultObject);
        }
        return  null;
    }

    /**
     * 移除某个数据
     * @param context
     * @param key
     */
    public static void remove(Context context,String key){
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.remove(key);
        editor.apply();
    }

    /**
     * 清除所有数据
     * @param context
     */
    public static void clear(Context context){
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.clear();
        editor.apply();
    }

    /**
     * 查询某条记录是否存在
     * @param context
     * @param key
     * @return
     */
    public static boolean icContains(Context context,String key){
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);
        return sp.contains(key);
    }

    /**
     * 返回所有的键值对
     * @param context
     * @return
     */
    public static Map<String,?>getAll(Context context){
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);
        return sp.getAll();
    }

    private static class SharePrefencesCompat{
        private static Method sApplyMethod = null;

        static {
            try {
                sApplyMethod = findApplyMethod();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
        }

        private static Method findApplyMethod() throws NoSuchMethodException {
            Class clz = SharedPreferences.Editor.class;
            return clz.getMethod("apply");
        }

        public static void apply(SharedPreferences.Editor editor) throws InvocationTargetException, IllegalAccessException {
            if(sApplyMethod !=null){
                sApplyMethod.invoke(editor);//invoke通常用来执行一个方法
                return;
            }
            editor.commit();
        }
    }
}

上一篇下一篇

猜你喜欢

热点阅读