Android MMKV
时间: 2023-08-28 12:11:26 浏览: 144
Android MMKV是一个高性能、高可靠性的键值存储库,特别适用于Android平台。它是基于C++编写的,并提供了Java和C++的API接口,可以方便地在Android应用中进行键值存储操作。
MMKV的特点包括:
1. 高性能:MMKV使用mmap技术将数据映射到内存中,读写速度非常快。
2. 高可靠性:MMKV采用了数据完整性校验和Crash Reco
相关问题
android MMKV
### Android 平台下 MMKV 使用详解
#### 初始化 MMKV 实例
为了方便开发者使用,MMKV 提供了一个全局默认实例 `defaultMMKV`。通过该实例可以快速实现键值对的读写操作。
```java
import com.tencent.mmkv.MMKV;
// 获取默认实例
MMKV kv = MMKV.defaultMMKV();
```
此方式适用于大多数应用场景下的简单数据存储需求[^4]。
#### 数据编码与解码
支持多种基础类型的编解码操作,包括布尔型、整数型以及字符串等常见类型:
- **布尔类型**
```java
// 编码布尔值
kv.encode("bool_key", true);
// 解码布尔值,默认返回 false 如果不存在对应 key
boolean boolValue = kv.decodeBool("bool_key");
```
- **整数类型**
```java
// 编码最小整数值
kv.encode("int_key", Integer.MIN_VALUE);
// 解码整数值,默认返回 0 如果不存在对应 key
int intValue = kv.decodeInt("int_key");
```
- **字符串类型**
```java
// 编码字符串
kv.encode("str_key", "Hello from mmkv");
// 解码字符串,默认返回 null 如果不存在对应 key
String stringValue = kv.decodeString("str_key");
```
上述代码片段展示了基本的数据存取流程,能够满足日常开发中的大部分需求。
#### 存储效率对比分析
相较于传统的SharedPreferences (简称 SP),MMKV 在内部采用了 Protocol Buffers 序列化协议来处理数据。这种序列化方式不仅提高了性能表现,在压缩率方面也有显著优势;然而值得注意的是,由于其独特的动态扩展策略(当剩余容量不足以容纳新加入的内容时会自动翻倍增长),可能导致最终占用磁盘空间稍大于预期。相比之下,SP 则严格按照实际所需字节数分配资源[^5]。
Android mmkv加密解密
为了在Android环境中保证数据安全,我们可以使用MMKV进行加密/解密。MMKV使用AES CFB-128算法来加密/解密数据。下面是一个简单的示例,演示如何使用MMKV进行加密/解密:
```java
// 初始化MMKV
MMKV kv = MMKV.mmkvWithID("testCustomDir", MMKV.MULTI_PROCESS_MODE);
// 加密数据
String key = "password";
String value = "123456";
byte[] bytes = value.getBytes();
bytes = kv.aesEncrypt(bytes, key.getBytes());
String encryptedValue = new String(bytes);
// 解密数据
bytes = encryptedValue.getBytes();
bytes = kv.aesDecrypt(bytes, key.getBytes());
String decryptedValue = new String(bytes);
```
在上面的示例中,我们首先使用`mmkvWithID()`方法初始化了MMKV。然后,我们使用`aesEncrypt()`方法将数据加密,并使用`aesDecrypt()`方法将其解密。需要注意的是,我们需要提供一个密钥来加密/解密数据。
阅读全文