| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- package eVVM.apk.helper;
- import android.app.Application;
- import android.content.Context;
- import android.content.SharedPreferences;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.util.Map;
- public class SPUtils {
- /**
- * 保存在手机里面的文件名
- */
- public static final String FILE_NAME = "evvm_share_data";
- private static Application context;
- private static SPUtils instance;
- /**
- * 必须在全局Application先调用,获取context上下文,否则缓存无法使用
- *
- * @param app Application
- */
- public SPUtils init(Application app) {
- context = app;
- return this;
- }
- public static SPUtils getInstance() {
- if (instance == null) {
- synchronized (SPUtils.class) {
- if (instance == null) {
- instance = new SPUtils();
- }
- }
- }
- return instance;
- }
- private SPUtils() {
- }
- /**
- * 获取全局上下文
- */
- public static Context getContext() {
- checkInitialize();
- return context;
- }
- /**
- * 检测是否调用初始化方法
- */
- private static void checkInitialize() {
- if (context == null) {
- throw new ExceptionInInitializerError("请先在全局Application中调用 SPUtils.getInstance().init(this) 初始化!");
- }
- }
- /**
- * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
- *
- * @param
- * @param key
- * @param object
- */
- public static void put( String key, Object object)
- {
- SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_MULTI_PROCESS);
- 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
- * @param key
- * @param defaultObject
- * @return
- */
- public static Object get( 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
- * @param key
- */
- public static void remove( String key)
- {
- SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
- Context.MODE_PRIVATE);
- SharedPreferences.Editor editor = sp.edit();
- editor.remove(key);
- SharedPreferencesCompat.apply(editor);
- }
- public static void logout() {
- remove("USER_PHONE");
- remove("USER_PWD");
- remove("USER_ID");
- remove("USER_TOKEN");
- }
- /**
- * 清除所有数据
- * @param
- */
- // public static void clear()
- // {
- // SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
- // Context.MODE_PRIVATE);
- // SharedPreferences.Editor editor = sp.edit();
- // editor.clear();
- // SharedPreferencesCompat.apply(editor);
- //
- // }
- /**
- * 查询某个key是否已经存在
- * @param
- * @param key
- * @return
- */
- public static boolean contains( String key)
- {
- SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
- Context.MODE_PRIVATE);
- return sp.contains(key);
- }
- /**
- * 返回所有的键值对
- *
- * @param
- * @return
- */
- public static Map<String, ?> getAll()
- {
- 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();
- }
- }
- }
|