美文网首页android第三方框架
玩一玩MMKV存储利器(Android篇)

玩一玩MMKV存储利器(Android篇)

作者: 邓立_全栈UncleLi | 来源:发表于2021-05-27 11:19 被阅读0次

    使用原因:SharedPreferences多线程取值失效,有位熊兄弟推荐使用香飘飘MMKV存储利器,不香赔钱。然而我抱着赔钱的心态玩了一下,真香!!

    MMKV优势

    • 使用零拷贝技术之一mmap内存映射的key-value组件,用户空间可以共享内核空间的数据,减少内核空间到用户空间的拷贝次数
    • 采用性能最佳的protobuf协议
    • 稳定,最先使用在iOS中,后续Android也可以使用这真香利器
    • 性能比SharedPreferences香多了


      真香性能

    那就开始玩耍吧~~~

    添加依赖

    build.gradle加上依赖,具体版本可访问github项目网址:https://github.com/Tencent/MMKV

    dependencies {
        implementation 'com.tencent:mmkv-static:1.2.8'
    }
    

    初始化MMKV

    可在onCreate初始化MMKV

    @Override
    public void onCreate() {
        super.onCreate();
        MMKV.initialize(this);
    }
    

    真香使用

    import com.tencent.mmkv.MMKV;
    
    // 创建默认实例
    MMKV kv = MMKV.defaultMMKV();
    
    // 创建自己的实例
    // param1:库的key
    // param2:库的模式(多进程或单进程)
    MMKV kv2 = MMKV.mmkvWithID("test", MMKV.MULTI_PROCESS_MODE);
    
    // set值 布尔值
    kv.encode("bool", true);
    // get值 布尔值
    boolean bValue = kv.decodeBool("bool");
    
    // set值 整形
    kv.encode("int", Integer.MIN_VALUE);
    // get值 整形
    int iValue = kv.decodeInt("int");
    
    // set值 字符串
    kv.encode("string", "Hello from mmkv");
    // get值 字符串
    String str = kv.decodeString("string");
    
    // set值 float
    kv.encode("float",30f);
    // get值 float
    float floatValue = kv.decodeFloat("float");
    
    // set值bytes
    kv.encode("bytes", bytes);
    // get值bytes
    byte[] b = kv.decodeBytes("bytes");
    
    // set值double
    kv.encode("double", Double.MIN_VALUE);
    // get值double
    Double d = kv.decodeDouble("double");
    
    // set值long
    kv.encode("long", Long.MAX_VALUE);
    // get值long
    Long l = kv.decodeLong("long");
    
    // set值 set集合
    kv.encode("set", new HashSet<String>(2) {{
        add("1");
        add("2");
    }});
    // get值 set集合
    Set<String> set =  kv.decodeStringSet("1");
    
    // 获取所有keys
    String[] strArray = kv.allKeys();
    
    // 获取kv总数
    long lo = kv.totalSize();
    
    // 是否存在key
    boolean hasBool = kv.containsKey("bool");
    
    // 删除单个
    kv.removeValueForKey("test");
    
    // 删除多个
    kv.removeValuesForKeys(new String[]{"test1", "test2"});
    
    // 删除缓存值,后续调用将从磁盘中加载所有键值
    kv.clearMemoryCache();
    
    // 删除所有数据
    // 底层调用clearAl()
    kv.clearAll();
    
    // 删除所有数据
    // 删除磁盘中加载所有键值
    kv.clearAll();
    

    iOS 篇请跳转此地址:https://www.jianshu.com/p/57734e33da8d

    相关文章

      网友评论

        本文标题:玩一玩MMKV存储利器(Android篇)

        本文链接:https://www.haomeiwen.com/subject/kkocsltx.html