Android 简单存储 SharedPreferencesUtils

/**  * SharedPreferences的一个工具类,调用setParam就能保存String, Integer, Boolean, Float,  * Long类型的参数 同样调用getParam就能获取到保存在手机里面的数据  *  * @author 带头大哥  *  */ public class SharedPreferencesUtils {
   /**  * <pre>  * 所有要存储的key都在这定义方便管理  * 注意标注类型  * </pre>  */  public static final String KEY_NAME = "";
   /**  * 保存在手机里面的文件名  */  private static final String FILE_NAME = "MyData";

   /**  * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法  *  * SharedPreferencesUtils.setParam(this, "String", "xiaanming");  * SharedPreferencesUtils.setParam(this, "int", 10);  * SharedPreferencesUtils.setParam(this, "boolean", true);  * SharedPreferencesUtils.setParam(this, "long", 100L);  * SharedPreferencesUtils.setParam(this, "float", 1.1f);  *  * @param context  * @param key  * @param object  */  public static void setParam(Context context, String key, Object object) {
      // String type = object.getClass().getSimpleName();
      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());
      }
      editor.commit();
   }

   /**  * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值  *  * SharedPreferencesUtils.getParam(TimerActivity.this, "String", "");  * SharedPreferencesUtils.getParam(TimerActivity.this, "int", 0);  * SharedPreferencesUtils.getParam(TimerActivity.this, "boolean", false);  * SharedPreferencesUtils.getParam(TimerActivity.this, "long", 0L);  * SharedPreferencesUtils.getParam(TimerActivity.this, "float", 0.0f);  *  * @param context  * @param key  * @param defaultObject  * @return  */  public static Object getParam(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);
   }

   /**  * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类  *  *  */  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();
      }
   }
}

你可能感兴趣的:(android,优化,数据,存储,手机)