MMKV使用及简单封装-kotlin
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相关推荐
- Android APP更新下载工具类——简单封装DownloadManager
几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...
- 简单封装浏览器 cookie 工具类
版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...
- 小程序简单封装 request 请求
我在这里做了详细的介绍 : 小程序简单封装 request 请求 转载于:https://www.cnblogs.com/biangz/p/9984340.html
- 简单封装 HTTP 请求
2017-2-19 更新到第二版: 源码地址:http://git.oschina.net/sp42/ajaxjs/tree/master/ajaxjs-base/src/com/ajaxjs/net ...
- 【JDBC】实现对JDBC 连接的简单封装
package util;import java.sql.Connection; import java.sql.DriverManager;/**** 实现对JDBC 的封装* @author mq ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- ios开发之使用多文件上传的简单封装最原始的
ios开发之使用多文件上传的简单封装最原始的 // // ViewController.m // 18-上传多个文件 // // Created by 鲁军 on 2021/2/13. //#impo ...
- Spring jdbc 对象Mapper的简单封装
一般查询实体的时候,都需要这么使用/** * 根据id查询 * * @return */ public Emp queryEmpById(Intege ...
- Google图片加载库Glide的简单封装GlideUtils
Google图片加载库Glide的简单封装GlideUtils
最新文章
- 安恒月赛 image up
- Python__数据结构与算法——表、栈、队列
- word List 17
- 【笔记】C++自学笔记系列02:类的组合与类的友元
- 用python写网络爬虫 -从零开始 4 用正则表达式 编写链接爬虫
- 核方法(kernel method)的主要思想
- python怎么读程序-python怎么读sql数据?
- The Python Debugger Command
- 兄弟,答应我?别再去东南亚写代码了好么?
- 迷宫 DFS (模拟和DFS)
- layui图片放大功能
- 使用移动云MAS HTTP接口发送短信BASE64加密中文乱码
- 仿网易新闻顶部菜单html,iOS仿网易新闻滚动导航条效果
- Animated之基础篇-概述
- Web、app、H5、小程序测试的区别
- 关于技术美术的一些个人理解
- 古文觀止卷七_原道_韓愈
- Suzy加油吧 Day 29 | 回溯算法进行中:491. 递增子序列,46 全排列,47 全排列2
- 微信人工客服转服务电话号码呢?
- 明星的阶梯:威尼斯电影节 | 经济学人早报精选20210831