实例详解Android快速开发工具类总结

2019-12-10 19:13:17丽君

三、SharedPreferences封装类 SPUtils.java 和 PreferencesUtils.java

1. SPUtils.java

public class SPUtils 
{ 
/** 
* 保存在手机里面的文件名 
*/ 
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); 
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, object.toString()); 
} 
SharedPreferencesCompat.apply(editor); 
} 
/** 
* 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 
* 
* @param context 
* @param key 
* @param defaultObject 
* @return 
*/ 
public static Object get(Context context, String key, Object defaultObject) 
{ 
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, 
Context.MODE_PRIVATE); 
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; 
} 
/** 
* 移除某个key值已经对应的值 
* @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); 
SharedPreferencesCompat.apply(editor); 
} 
/** 
* 清除所有数据 
* @param context 
*/ 
public static void clear(Context context) 
{ 
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, 
Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sp.edit(); 
editor.clear(); 
SharedPreferencesCompat.apply(editor); 
} 
/** 
* 查询某个key是否已经存在 
* @param context 
* @param key 
* @return 
*/ 
public static boolean contains(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(); 
} 
/** 
* 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类 
* 
* @author zhy 
* 
*/ 
private static class SharedPreferencesCompat 
{ 
private static final Method sApplyMethod = findApplyMethod(); 
/** 
* 反射查找apply的方法 
* 
* @return 
*/ 
@SuppressWarnings({ "unchecked", "rawtypes" }) 
private static Method findApplyMethod() 
{ 
try 
{ 
Class clz = SharedPreferences.Editor.class; 
return clz.getMethod("apply"); 
} catch (NoSuchMethodException e) 
{ 
} 
return null; 
} 
/** 
* 如果找到则使用apply执行,否则使用commit 
* 
* @param editor 
*/ 
public static void apply(SharedPreferences.Editor editor) 
{ 
try 
{ 
if (sApplyMethod != null) 
{ 
sApplyMethod.invoke(editor); 
return; 
} 
} catch (IllegalArgumentException e) 
{ 
} catch (IllegalAccessException e) 
{ 
} catch (InvocationTargetException e) 
{ 
} 
editor.commit(); 
} 
} 
}