序列化配置
单例配置¶
为类添加注解@SerializeConfig可指定其所有serialXX()字段的MMKV实例配置
同名覆盖
当mmapID和字段名相同情况下会覆盖值, 甚至引起读取类型错误导致崩溃
全局配置¶
多账户存储¶
使用SerializeHook动态指定mmapID, 常见场景为根据账号使用不同用户数据
创建用户数据类
@SerializeConfig(mmapID = "user_config") // 指定mmapID可以避免字段名重复情况下导致的错误
object UserConfig {
    var userId: String by serialLazy()
}
实现SerializeHook
class ProtobufSerializeHook : SerializeHook {
    // ...
    override fun mmkvWithID(mmapID: String, mode: Int, cryptKey: String?): MMKV {
        // 当存储为用户数据时, 添加当前账户到mmapID中, 请注意不要循环调用
        if (mmapID == "user_config") {
            return super.mmkvWithID(mmapID + "_" + AppConfig.currentAccount, mode, cryptKey)
        }
        return super.mmkvWithID(mmapID, mode, cryptKey)
    }
}
指定存储目录/日志等级¶
默认情况下,MMKV 将文件存储在$(FilesDir)/mmkv/
使用MMKV方法可指定自定义存储目录或日志输出等级
清除数据¶
两种方式清除数据
- 
赋值为null 
- 
指定 MMKV实例删除