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”, “”);