MMKV使用和原理

本文介绍了MMKV作为SharedPreferences替代方案的优势,包括其使用方法、性能对比以及原理分析。MMKV通过mmap和protobuf实现高效的数据读写,与SP相比在写入性能上存在显著优势。此外,文章还探讨了SP的缺点和工作原理,以及MMKV的多进程模式和安全性问题。

MMKV使用和原理

本文链接:MMKV使用和原理_猎羽的博客-优快云博客

1、SP缺点

  1. commit、apply会产生ANR,到Android 8.0都没有解决该BUG

2、MMKV

  1. 实现了SP接口,因此使用方法一模一样
  2. mmap + protobuf 实现

3、SP和MMKV性能对比

  1. 写入:SP和MMKV都写10000个int数据,SP耗时6s,MMKV耗时10ms。相差百倍~千倍。
  2. 读取:性能差不多。SP(map读取,O(1))

4、mmap和IO性能对比

  1. 相差100~200倍(Android),mmap和操作内存一样快

MMKV使用

1、引入mmkv

implementation 'com.tencent:mmkv:1.3.0'

2、Application.onCreate中初始化

val rootDir = MMKV.initialize(this) println("mmkv root:$rootDir")

3、使用

var mmkv = MMKV.defaultMMKV() // 全局对象 mmkv.encode("bool", true) // put var bValue = mmkv.decodeBool("bool") //get

4、多进程模式(id不同,在同一路径下,访问的数据也不同):可以跨进程通讯

var multiMMKV = MMKV.mmkvWithID("id", MMKV.MULTI_PROCESS_MODE)

安全性

MMKV多进程模式下是不安全的,

Windows 系统下编译 CEF(Chromium Embedded Framework)源码是一个较为复杂的流程,涉及多个步骤和依赖项的配置。以下是详细的编译方法和步骤: ### ### 环境准备 在开始编译之前,需要确保系统满足以下要求: - 安装 **Windows 10 或更高版本**。 - 安装 **Python 2.7.x**,因为 CEF 的构建脚本依赖于 Python。 - 安装 **Visual Studio 2019 或更高版本**,推荐使用 VS2019 以确保兼容性。 - 安装 **depot_tools**,这是 Chromium 的构建工具集,可以通过以下命令克隆: ```bash git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git ``` 将 `depot_tools` 添加到系统环境变量 `PATH` 中。 ### ### 目录结构 按照 CEF 的官方推荐,构建目录结构如下: ``` code/ ├── automate/ │ └── automate-git.py <-- CEF 构建脚本 ├── chromium_git/ │ └── cef/ <-- CEF 源码目录 ├── chromium/ │ └── src/ <-- Chromium 源码目录 ├── update.bat <-- 启动脚本 └── depot_tools/ <-- Chromium 构建工具 ``` ### ### 下载 CEF 源码 使用 `automate-git.py` 脚本下载 CEF 和 Chromium 源码。执行以下命令: ```bash python automate-git.py --download-dir C:\path\to\code --branch 4949 --force-clean ``` - `--branch` 参数指定 CEF 的版本分支,例如 `4949` 是 CEF 的一个稳定版本。 - `--download-dir` 指定下载目录。 - 使用 `--no-update` 参数可以跳过源码更新阶段,加快重复构建的速度。 - 使用 `--no-debug-build` 或 `--no-release-build` 可以避免构建不必要的版本,节省时间[^4]。 ### ### 配置构建参数 在 `chromium/src/cef/` 目录下,编辑 `cef_build.bat` 文件,配置构建参数: - `CEF_USE_SANDBOX=0`:禁用沙箱(可选)。 - `GYP_DEFINES="buildtype=Official"`:设置构建类型为发布版本。 - `--parallel`:启用并行构建,加快编译速度。 ### ### 使用 CMake 生成构建文件 进入 `CEF3` 源码目录,创建构建目录 `build2010`,然后使用 CMake 生成 Visual Studio 项目文件: ```bash mkdir build2010 cd build2010 cmake -G "Visual Studio 16 2019" -A Win32 .. ``` - `-G` 指定生成器,这里使用的是 Visual Studio 2019。 - `-A` 指定目标架构,例如 `Win32` 表示 32 位构建。 ### ### 编译项目 打开生成的 `.sln` 文件(例如 `build2010/cef.sln`),选择构建配置(如 Release),然后进行编译编译完成后,`lib_cef_wrapper.lib` 文件将生成在 `binary_distrib` 目录中[^2]。 ### ### 测试编译结果 编译完成后,在 `chromium/src/out` 目录下找到 `cefclient.exe` 文件,运行该文件并访问以下网站以测试功能: - [http://html5test.com](http://html5test.com):用于测试 HTML5 功能支持情况。 - [https://woolyss.com/media-test/](https://woolyss.com/media-test/):用于测试音频和视频格式的支持情况[^5]。 ### ### 常见问题处理 - **构建失败**:如果构建过程中出现错误,可以尝试使用 `--no-update` 参数跳过源码更新步骤,重新执行构建。 - **运行库设置**:确保在编译时将运行库设置为 **MT(多线程)**,否则会导致链接错误。可以在 Visual Studio 的“配置属性 -> C/C++ -> 代码生成”中设置运行库为 MT[^4]。 - **Unicode 支持**:编译 CEF 时定义了 `UNICODE` 和 `_UNICODE` 宏,建议在项目中也启用 Unicode 字符集以确保兼容性[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值