MMKV 基于 mmap 内存映射的 key-value 组件,在Android中替代SharedPreferences的使用

本文档详细介绍了如何在Android项目中使用MMKV轻量级高性能的存储库进行数据存储。主要内容包括:如何通过Gradle引入MMKV依赖,初始化MMKV,以及基本的读写操作。此外还提供了自定义存储路径的方法,以及从SharedPreferences迁移数据的示例。
1、gradle中加入依赖:
 implementation 'com.tencent:mmkv-static:1.2.7'

2、application中初始化:

MMKV.initialize(this)

3、写入和读取:

        var kv = MMKV.defaultMMKV();

        kv?.encode("bool", true)
        var bValue = kv?.decodeBool("bool");
        LoggerUtils.i(TAG, bValue.toString())

        kv?.encode("int", Integer.MIN_VALUE);
        var iValue = kv?.decodeInt("int");
        LoggerUtils.i(TAG, iValue.toString())

        kv?.encode("string", "Hello from mmkv");
        var str = kv?.decodeString("string");
        LoggerUtils.i(TAG, str)

4、删除:

        var kv = MMKV.defaultMMKV()
        kv?.removeValueForKey("bool")
        kv?.removeValuesForKeys(arrayOf("int", "long"))
        kv?.clearAll()
        var hasBool = kv?.containsKey("bool")

5、不同业务需分别别存储

 var mmkv = MMKV.mmkvWithID("MyID");
 mmkv?.encode("bool", true);

6、自定义根目录

val dir = filesDir.absolutePath + "/mmkv_2"
val rootDir = MMKV.initialize(dir)
LoggerUtils.i(TAG, "mmkv root: $rootDir")

7、自定义某个文件的目录

 val relativePath = filesDir.absolutePath + "/mmkv_3"
 val kv = MMKV.mmkvWithID("testCustomDir", relativePath)

8、sharepreference

 private fun testImportSharedPreferences() {
        //SharedPreferences preferences = getSharedPreferences("myData", MODE_PRIVATE);
        val preferences = MMKV.mmkvWithID("myData")
        // 迁移旧数据
        run {
            val old_man =
                getSharedPreferences("myData", Context.MODE_PRIVATE)
            preferences!!.importFromSharedPreferences(old_man)
            old_man.edit().clear().commit()
        }
        // 跟以前用法一样
        val editor = preferences!!.edit()
        editor.putBoolean("bool", true)
        editor.putInt("int", Int.MIN_VALUE)
        editor.putLong("long", Long.MAX_VALUE)
        editor.putFloat("float", -3.14f)
        editor.putString("string", "hello, imported")
        val set = HashSet<String>()
        set.add("W")
        set.add("e")
        set.add("C")
        set.add("h")
        set.add("a")
        set.add("t")
        editor.putStringSet("string-set", set)
        // 无需调用 commit()
        //editor.commit();
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值