美文网首页
SharePrefences的简单封装

SharePrefences的简单封装

作者: 耀东wang | 来源:发表于2018-08-20 16:20 被阅读0次

    模板如下:

    /**
     * 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();
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:SharePrefences的简单封装

          本文链接:https://www.haomeiwen.com/subject/seyliftx.html