| package com.xdsjs.save.utils; |
| import android.content.Context; |
| import android.content.SharedPreferences; |
| import java.lang.reflect.InvocationTargetException; |
| import java.lang.reflect.Method; |
| import java.util.Map; |
| /** |
| * 缓存工具类 |
| * Created by xdsjs on 2015/10/13. |
| */ |
| 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(); |
| } |
| } |
本文介绍了一个名为SPUtils的Android平台缓存工具类,该工具类提供了多种方法用于保存和读取应用数据,包括字符串、整数、布尔值、浮点数和长整型数据。此外还提供了移除特定数据项、清空所有数据、检查是否存在特定键值对及获取所有键值对的功能。
878

被折叠的 条评论
为什么被折叠?



