SharedPreferences 工具类

March 16, 2025 · View on GitHub

使用演示类 ShareUse 介绍了配置参数及使用

1.apply 没有返回值而 commit 返回 boolean 表明修改是否提交成功 2.apply 是将修改数据原子提交到内存,而后异步真正提交到硬件磁盘,而 commit 是同步的提交到硬件磁盘 3.apply 方法不会提示任何失败的提示 apply 的效率高一些,如果没有必要确认是否提交成功建议使用 apply

项目类结构 - 包目录

  • SharedPreferences 工具类(SPUtils):SP 操作工具类,实现 IPreferenceHolder 初始化方法

  • IPreference 持有类(IPreferenceHolder):IPreference 持有类,内部返回实现类 IPreference

  • IPreference 接口类(IPreference):主要是正常操作方法接口类

  • PreferenceImpl 接口实现类(PreferenceImpl):实现 IPreference 接口,SharedPreferences 操作接口具体实现类

  • SharedPreferences 快捷使用工具类(SharedUtils):内部实现 SPUtils,直接进行使用 put/get 等

API 文档

方法注释
put保存数据
putAll保存 Map 集合(只能是 Integer、Long、Boolean、Float、String、Set)
get根据 key 获取数据
getAll获取全部数据
remove移除数据
removeAll移除集合的数据
contains是否存在 key
clear清除全部数据
getInt获取 int 类型的数据
getFloat获取 float 类型的数据
getLong获取 long 类型的数据
getBoolean获取 boolean 类型的数据
getString获取 String 类型的数据
getSet获取 Set 类型的数据

使用示例

// 具体实现方法 基于 PreferenceImpl 实现

// 存在可调用的方法 IPreference

// SharedUtils 二次分装 SPUtils, 快捷调用

SharedUtils.put("aa", "aa");
SharedUtils.put("ac", 123);

// ===========
// = SPUtils =
// ===========

// 想要自定义 模式, 名字等
SPUtils.getPreference(DevUtils.getContext()).put("aa", 1);
SPUtils.getPreference(DevUtils.getContext(), "xxx").put("aa", 1);
SPUtils.getPreference(DevUtils.getContext(), "xxxxx", Context.MODE_PRIVATE).put("aa", 1);


// 默认值如下
switch (type) {
    case INTEGER:
        return preferences.getInt(key, -1);
    case FLOAT:
        return preferences.getFloat(key, -1F);
    case BOOLEAN:
        return preferences.getBoolean(key, false);
    case LONG:
        return preferences.getLong(key, -1L);
    case STRING:
        return preferences.getString(key, null);
    case STRING_SET:
        return preferences.getStringSet(key, null);
    default: // 默认取出String类型的数据
        return null;
}