MMKV使用及简单封装-kotlin

  • MMKV使用
    • 依赖注入
    • 初始化
    • 实例化和使用
    • 其他
    • SharedPreferences数据迁移
  • 简单封装
  • 结束

MMKV使用

使用非常简单

依赖注入

// mmkv存储
implementation 'com.tencent:mmkv-static:1.2.7'

初始化

App记得调用

import android.app.Application
import com.tencent.mmkv.MMKV/*** 作者: CQ* 日期: 2021-03-31* 说明:*/
class App : Application() {override fun onCreate() {super.onCreate()// 1、可以修改目录的初始化 目录:/data/data/包名/files/mmkv// val path = filesDir.absolutePath + "/mmkv"// MMKV.initialize(path)//2、普通初始化 目录:/data/data/包名/filesMMKV.initialize(this)// 1和2使用一个就可以了}
}

实例化和使用

     // 获取默认的全局实例val kv = MMKV.defaultMMKV()kv!!.encode("a", "a") // 写入kv.decodeString("a", "") // 读取

其他

     // 获取默认的全局实例val kv = MMKV.defaultMMKV()// 根据业务区别存储, 附带一个自己的 IDMMKV.mmkvWithID("ID_")// 多进程同步支持MMKV.mmkvWithID("ID_", MMKV.MULTI_PROCESS_MODE)

SharedPreferences数据迁移

        val kv = MMKV.mmkvWithID("ID_")val  oldData = getSharedPreferences("ID_", MODE_PRIVATE)// 迁移旧数据kv!!.importFromSharedPreferences(oldData);// 清空旧数据oldData.edit().clear().apply()

简单封装

import android.os.Parcelable
import com.tencent.mmkv.MMKV
import java.util.*
/*** 作者: CQ* 日期: 2021-03-30* 说明: 字段储存* 使用:需要MMKV.initialize(this)*/
object SpUtils {var mmkv: MMKV? = nullinit {mmkv = MMKV.defaultMMKV()}fun put(key: String, value: Any?): Boolean {return 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)!!else -> false}}/*** 这里使用安卓自带的Parcelable序列化,它比java支持的Serializer序列化性能好些*/fun <T : Parcelable> put(key: String, t: T?): Boolean {if (t == null) {return false}return mmkv?.encode(key, t)!!}fun put(key: String, sets: Set<String>?): Boolean {if (sets == null) {return false}return mmkv?.encode(key, sets)!!}fun getInt(key: String): Int? {return mmkv?.decodeInt(key, 0)}fun getDouble(key: String): Double? {return mmkv?.decodeDouble(key, 0.00)}fun getLong(key: String): Long? {return mmkv?.decodeLong(key, 0L)}fun getBoolean(key: String): Boolean? {return mmkv?.decodeBool(key, false)}fun getFloat(key: String): Float? {return mmkv?.decodeFloat(key, 0F)}fun getByteArray(key: String): ByteArray? {return mmkv?.decodeBytes(key)}fun getString(key: String): String? {return mmkv?.decodeString(key, "")}/*** SpUtils.getParcelable<Class>("")*/inline fun <reified T : Parcelable> getParcelable(key: String): T? {return mmkv?.decodeParcelable(key, T::class.java)}fun getStringSet(key: String): Set<String>? {return mmkv?.decodeStringSet(key, Collections.emptySet())}fun removeKey(key: String) {mmkv?.removeValueForKey(key)}fun clearAll() {mmkv?.clearAll()}}

结束

MMKV使用及简单封装-kotlin相关推荐

  1. Android APP更新下载工具类——简单封装DownloadManager

    几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...

  2. 简单封装浏览器 cookie 工具类

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...

  3. 小程序简单封装 request 请求

    我在这里做了详细的介绍 : 小程序简单封装 request 请求 转载于:https://www.cnblogs.com/biangz/p/9984340.html

  4. 简单封装 HTTP 请求

    2017-2-19 更新到第二版: 源码地址:http://git.oschina.net/sp42/ajaxjs/tree/master/ajaxjs-base/src/com/ajaxjs/net ...

  5. 【JDBC】实现对JDBC 连接的简单封装

    package util;import java.sql.Connection; import java.sql.DriverManager;/**** 实现对JDBC 的封装* @author mq ...

  6. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  7. ios开发之使用多文件上传的简单封装最原始的

    ios开发之使用多文件上传的简单封装最原始的 // // ViewController.m // 18-上传多个文件 // // Created by 鲁军 on 2021/2/13. //#impo ...

  8. Spring jdbc 对象Mapper的简单封装

    一般查询实体的时候,都需要这么使用/**      * 根据id查询      *       * @return      */     public Emp queryEmpById(Intege ...

  9. Google图片加载库Glide的简单封装GlideUtils

    Google图片加载库Glide的简单封装GlideUtils  

最新文章

  1. 安恒月赛 image up
  2. Python__数据结构与算法——表、栈、队列
  3. word List 17
  4. 【笔记】C++自学笔记系列02:类的组合与类的友元
  5. 用python写网络爬虫 -从零开始 4 用正则表达式 编写链接爬虫
  6. 核方法(kernel method)的主要思想
  7. python怎么读程序-python怎么读sql数据?
  8. The Python Debugger Command
  9. 兄弟,答应我?别再去东南亚写代码了好么?
  10. 迷宫 DFS (模拟和DFS)
  11. layui图片放大功能
  12. 使用移动云MAS HTTP接口发送短信BASE64加密中文乱码
  13. 仿网易新闻顶部菜单html,iOS仿网易新闻滚动导航条效果
  14. Animated之基础篇-概述
  15. Web、app、H5、小程序测试的区别
  16. 关于技术美术的一些个人理解
  17. 古文觀止卷七_原道_韓愈
  18. Suzy加油吧 Day 29 | 回溯算法进行中:491. 递增子序列,46 全排列,47 全排列2
  19. 微信人工客服转服务电话号码呢?
  20. 明星的阶梯:威尼斯电影节 | 经济学人早报精选20210831

热门文章

  1. ubuntu 什么是xinetd
  2. POJ - 1723 Soldiers 士兵站队 排序+中位数
  3. 简单的图书馆借/还系统——C++实现
  4. MyCat(三)分库分表
  5. 身份证你需要了解的知识点
  6. substrate中打印调试信息的多种方式详解
  7. java架构师和大数据架构师有哪些不同
  8. 前景背景样本不均衡解决方案:Focal Loss,GHM与PISA(附python实现代码)
  9. FFMPEG 最简滤镜filter使用实例(实现视频缩放,裁剪,水印等)
  10. 即将到来的量子计算时代,其商业应用价值在哪里?