一个关于SharedPreferences的工具类
来源:互联网 发布:尚学堂 java视频 编辑:程序博客网 时间:2024/06/03 23:45
简介
之前,我使用的SharedPreferences的工具类,都是使用静态方法或单例,虽然使用起来还可以,但实用性上还是会有所欠缺。比如这个场景,我们需要将某些相关信息(比如用户信息、设备信息等)单独保存到一个SP文件,在需要时,统一清除掉。
假如不单独保存到一个SP文件,在需要清除某类信息时,就要通过key一个一个删除。如果单独保存,使用单例模式,势必要增加一个工具类。再如果,每个读写方法里都加上文件名参数……
有没有什么方法,只用一个工具类,既可以随时切换到某个SP文件很方便的进行存取,又可以在需要的时候很方便的统一清理某类相关数据(比如用户数据)。
经过苦苦追寻,发现枚举类可以很好的实现上面的需求。下面我就提供一个工具类SPUtil(枚举),只需要一个”.”,选择一下。(SPUtil. (选择)),就可以切换到不同的SP文件,再来一个”.”就可以方便的进行数据存取,轻松又方便,有没有很期待?
code
来来来,上代码:
/** * *(SharedPreferences)工具类----枚举类 * 每个实例对应一个sp文件,如,SYSTEM对应system文件,USER对应user文件… * * Update by wangzhengyang on 2017/8/21. * * 使用: * <code> 切换文件写入读取只需要一个“.” SPUtil.SYSTEM.…… //切换到system文件读写 SPUtil.USER.…… //切换到user文件读写 //单个写入提交 SPUtil.USER.putInt("age", 32).commit(); //链式调度写入提交(Consts:一个保存常量的类) SPUtil.USER .putString(Consts.KEY_NAME, "张三") .putString(Consts.KEY_SEX, "男") .putInt(Consts.KEY_AGE, 23) .commit(); //读取 String name = SPUtil.USER.getString(Consts.KEY_NAME, ""); String sex = SPUtil.USER.getString(Consts.KEY_SEX, ""); int age = SPUtil.USER.getInt(Consts.KEY_AGE, 0); Log.i(TAG, "name: " + name + "\tsex: "+ sex + "\tage: " + age); //根据key移除 boolean isRemoved = SPUtil.USER.remove(Consts.USER_NAME); //清除所有 boolean isClear = SPUtil.USER.clear(); </code> * */public enum SPUtil { DEFAULT("default"), SYSTEM("system"), DEVICE("device"), USER("user"); private final SharedPreferences SHARED_PREFS; private final String FILE_NAME; private final SharedPreferences.Editor EDITOR; SPUtil(String fileName) { this.FILE_NAME = fileName; SHARED_PREFS = MyApplication.getAppContext().getSharedPreferences(this.FILE_NAME, Context.MODE_PRIVATE); EDITOR = SHARED_PREFS.edit(); } /** * 获得文件名 * @return 文件名 */ public String getFileName(){ return FILE_NAME; } public SPUtil putString(String key, String value) { //if (TextUtils.isEmpty(key)) return false; EDITOR.putString(key, value); return this; } public String getString(String key, String defValue) { //if (TextUtils.isEmpty(key)) return null; return SHARED_PREFS.getString(key, defValue); } public SPUtil putBoolean(String key, boolean value) { //if (TextUtils.isEmpty(key)) return false; EDITOR.putBoolean(key, value); return this; } public boolean getBoolean(String key, boolean defValue) { //if (TextUtils.isEmpty(key)) return false; return SHARED_PREFS.getBoolean(key, defValue); } public SPUtil putInt(String key, int value) { EDITOR.putInt(key, value); return this; } public int getInt(String key, int defValue) { return SHARED_PREFS.getInt(key, defValue); } public SPUtil putFloat(String key, float value) { EDITOR.putFloat(key, value); return this; } public float getFloat(String key, float defValue) { return SHARED_PREFS.getFloat(key, defValue); } public SPUtil putLong(String key, long value) { EDITOR.putLong(key, value); return this; } public long getLong(String key, long defValue) { return SHARED_PREFS.getLong(key, defValue); } /** * 根据key移除 * @param key * @return */ public boolean remove(String key){ return EDITOR.remove(key).commit(); } /** * 清除SP文件中的所有数据 * @return */ public boolean clear(){ return EDITOR.clear().commit(); } /** * 提交 * @return */ public boolean commit(){ return EDITOR.commit(); }}
我自己的体验
用起来相当的方便!
1. 切换文件只需要一个“.”
SPUtil.SYSTEM.…… //切换到system文件读写SPUtil.USER.…… //切换到user文件读写
2. 单个写入,链式批量写入都可以(需要提交哦!)
//单个写入提交 SPUtil.USER.putInt("age", 32).commit(); //链式调度写入提交(Consts:一个保存常量的类) SPUtil.USER .putString(Consts.KEY_NAME, "张三") .putString(Consts.KEY_SEX, "男") .putInt(Consts.KEY_AGE, 23) .commit();
3. 读写数据不需要传入context(已经用了全局的Context)
只需要修改构造方法中的全局Context(MyApplication.getAppContext()
)为自己的全局Context。
//读取 String name = SPUtil.USER.getString(Consts.KEY_NAME, ""); String sex = SPUtil.USER.getString(Consts.KEY_SEX, ""); int age = SPUtil.USER.getInt(Consts.KEY_AGE, 0); Log.i(TAG, "name: " + name + "\tsex: "+ sex + "\tage: " + age);
3. 只需要切换到相应的文件下,就可以轻松移除。
//根据key移除 boolean isRemoved = SPUtil.USER.remove(Consts.USER_NAME); //清除所有 boolean isClear = SPUtil.USER.clear();
阅读全文
0 0
- 一个关于SharedPreferences的工具类
- 分享一个SharedPreferences操作的工具类
- 关于SharedPreferences工具类的使用思考
- 收藏一个SharedPreferences工具类
- 自定义一个SharedPreferences工具类
- 分享一个SharedPreferences工具类
- 分享一个工具类---SharedPreferences
- SharedPreferences 的工具类
- SharedPreferences的工具类
- SharedPreferences的工具类
- SharedPreferences的工具类
- Android 分享一个SharedPreferences的工具类,方便保存数据
- Android 分享一个SharedPreferences的工具类,方便保存数据
- Android 分享一个SharedPreferences的工具类,方便保存数据
- 一个高大上的SharedPreferences工具类——XPrefs
- Android 分享一个SharedPreferences的工具类,方便保存数据
- Android 分享一个SharedPreferences的工具类,方便保存数据
- 关于SharedPreferences简单工具类----(1)
- 【Python语法笔记】列表
- Tomcat中的设计模式
- Python破解验证码
- redis事务
- 人工智能的核心--机器学习
- 一个关于SharedPreferences的工具类
- 省级刊物发表论文需要注意哪些事项
- ChainerCV下用自己的数据集训练Faster RCNN
- gcc的-D,-w,-W,-Wall,-O3这些参数的意义
- 对于hive的一些理解
- 九宫格动画1
- PHP构造型设计模式
- 决定开启自己Leecode的漫漫长路
- UML在线工具