MMKV替代sp,封装的工具类(kotlin)

使用MMKV替代SharedPreferences,

  • 好处:MMKV是微信应用程序中使用的一种高效、小巧、易用的移动键值存储框架。目前在iOS、macOS、Android和Windows上都可以使用。

一、在app的build.gradle中引入

    implementation 'com.tencent:mmkv:1.0.19'

二、在application里初始化

        MMKV.initialize(getApplication());

三、使用SpUtil如下:

        SpUtil.INSTANCE.encode()
        SpUtil.INSTANCE.decodeStringSet()

mmkv官方说明:
https://github.com/Tencent/MMKV/wiki/android_tutorial


封装见完整代码如下:

object SpUtil {
    var mmkv: MMKV? = null

    init {
        mmkv = MMKV.defaultMMKV()
    }

    fun encode(key: String, value: Any?) {
        when (value) {
            is String -> mmkv?.encode(key, value)
            is Float -> mmkv?.encode(key, value)
            is Boolean -> mmkv?.encode(key, value)
            is Int -> mmkv?.encode(key, value)
            is Long -> mmkv?.encode(key, value)
            is Double -> mmkv?.encode(key, value)
            is ByteArray -> mmkv?.encode(key, value)
            is Nothing -> return
        }
    }

    fun <T : Parcelable> encode(key: String, t: T?) {
        if(t ==null){
            return
        }
            mmkv?.encode(key, t)
    }

    fun encode(key: String, sets: Set<String>?) {
        if(sets ==null){
            return
        }
        mmkv?.encode(key, sets)
    }

    fun decodeInt(key: String): Int? {
        return mmkv?.decodeInt(key, 0)
    }

    fun decodeDouble(key: String): Double? {
        return mmkv?.decodeDouble(key, 0.00)
    }

    fun decodeLong(key: String): Long? {
        return mmkv?.decodeLong(key, 0L)
    }

    fun decodeBoolean(key: String): Boolean? {
        return mmkv?.decodeBool(key, false)
    }

    fun decodeFloat(key: String): Float? {
        return mmkv?.decodeFloat(key, 0F)
    }

    fun decodeByteArray(key: String): ByteArray? {
        return mmkv?.decodeBytes(key)
    }

    fun decodeString(key: String): String? {
        return mmkv?.decodeString(key, "")
    }

    fun <T : Parcelable> decodeParcelable(key: String, tClass: Class<T>): T? {
        return mmkv?.decodeParcelable(key, tClass)
    }

    fun decodeStringSet(key: String): Set<String>? {
        return mmkv?.decodeStringSet(key, Collections.emptySet())
    }

    fun removeKey(key: String) {
        mmkv?.removeValueForKey(key)
    }

    fun clearAll() {
        mmkv?.clearAll()
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转自微信开发团队凌国的分享。原文 MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,...
    那样风采阅读 42,455评论 6 35
  • 东西有点多,但是资源绝对nice,自己都全部亲身体验过了,大家可放心使用 github排名: https://gi...
    Rance935阅读 13,908评论 26 312
  • https://github.com/7heaven/bitmapMesh Android开源项目及库整理总结 字...
    奈何心善阅读 10,147评论 2 40
  • 各种帮助类汇总:https://github.com/Blankj/AndroidUtilCode 常用的 ios...
    懦弱的me阅读 5,212评论 0 51
  • 他嘴边的空气里蠕动着心里所想的话,汇聚成一个美丽的泡沫。然而他却没有勇气吹破它。
    十月二十二阅读 2,224评论 0 0

友情链接更多精彩内容