SharedPreferences封裝

1.sputil
public class Sputil {
private static final String FILE_NAME=“share_data”;
private static Sputil mInstance;
private SharedPreferences sp;

public static Sputil getInstance() {
    if (mInstance == null) {
                mInstance = new Sputil();

    }



    return mInstance;
}
private Sputil(){
    sp = PreferenceManager.getDefaultSharedPreferences(App.context);
}
/**
 *保存數據的方法
 * @param key
 * @param object
 */
public void putValue(String key,Object object){
    SharedPreferences.Editor editor=sp.edit();
    if (object instanceof String){
        editor.putString(key, (String) object);
    }else if(object instanceof Integer){
        editor.putInt(key, (Integer) object);
    }else if(object instanceof Boolean){
        editor.putBoolean(key, (Boolean) object);
    }else if(object instanceof Float){
        editor.putFloat(key, (Float) object);
    }else if(object instanceof Long){
        editor.putLong(key, (Long) object);
    }else {
        editor.putString(key, (String) object);
    }
    SharedPreferencesCompat.apply(editor);
}

/**
 * 獲取數據
 * @param key
 * @param defaultObject
 * @return
 */
public Object getValue(String key,Object defaultObject){
    if (defaultObject instanceof String){
        return sp.getString(key, (String) defaultObject);
    } else if (defaultObject instanceof Integer) {
        return sp.getInt(key, (Integer) defaultObject);
    } else if (defaultObject instanceof Boolean) {
        return sp.getBoolean(key, (Boolean) defaultObject);
    } else if (defaultObject instanceof Float) {
        return sp.getFloat(key, (Float) defaultObject);
    } else if (defaultObject instanceof Long) {
        return sp.getLong(key, (Long) defaultObject);
    }
    return null;
}

/**
 * 移除
 * @param key
 */
public void remove(String key){
    SharedPreferences.Editor editor=sp.edit();
    editor.remove(key);
    SharedPreferencesCompat.apply(editor);
}

/**
 * 清除所有數據
 */
public void clearAll() {
    SharedPreferences.Editor editor = sp.edit();
    editor.clear();
    SharedPreferencesCompat.apply(editor);
}

/**
 * 返回所有鍵值對
 * @return
 */
public Map<String, ?> getAll() {
    return sp.getAll();
}
private static class SharedPreferencesCompat{
    private static  final Method sApplyMethod=findApplyMethod();
    /**
     * 反射查找apply方法
     * @return
     */
    private static Method findApplyMethod() {
        Class cls = SharedPreferences.Editor.class;
        try {
            return cls.getMethod("apply");
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 如果找到使用apply執行,否則使用commit
     * @param editor
     */
    public static void apply(SharedPreferences.Editor editor) {
        if (sApplyMethod!=null){
            try {
                sApplyMethod.invoke(editor);
                return;
            } catch (Exception e) {
                e.printStackTrace();
            }
            editor.commit();
        }
    }
}

}

2.使用
存值
Sputil.getInstance().putValue(“cunzhi”, “123”);
取值
String cunzhi = (String) Sputil.getInstance().getValue(“cunzhi”, “”);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章