使用原因:SharedPreferences多線程取值失效冕香,有位熊兄弟推薦使用香飄飄MMKV存儲利器,不香賠錢镣奋。然而我抱著賠錢的心態(tài)玩了一下币呵,真香!侨颈!
MMKV優(yōu)勢
- 使用零拷貝技術(shù)之一
mmap
內(nèi)存映射的key-value組件余赢,用戶空間可以共享內(nèi)核空間的數(shù)據(jù),減少內(nèi)核空間到用戶空間的拷貝次數(shù) - 采用性能最佳的
protobuf
協(xié)議 - 穩(wěn)定哈垢,最先使用在iOS中妻柒,后續(xù)Android也可以使用這真香利器
-
性能比SharedPreferences香多了
真香性能
那就開始玩耍吧~~~
添加依賴
build.gradle
加上依賴,具體版本可訪問github項目網(wǎng)址: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;
// 創(chuàng)建默認(rèn)實例
MMKV kv = MMKV.defaultMMKV();
// 創(chuàng)建自己的實例
// param1:庫的key
// param2:庫的模式(多進(jìn)程或單進(jìn)程)
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總數(shù)
long lo = kv.totalSize();
// 是否存在key
boolean hasBool = kv.containsKey("bool");
// 刪除單個
kv.removeValueForKey("test");
// 刪除多個
kv.removeValuesForKeys(new String[]{"test1", "test2"});
// 刪除緩存值蛤奢,后續(xù)調(diào)用將從磁盤中加載所有鍵值
kv.clearMemoryCache();
// 刪除所有數(shù)據(jù)
// 底層調(diào)用clearAl()
kv.clearAll();
// 刪除所有數(shù)據(jù)
// 刪除磁盤中加載所有鍵值
kv.clearAll();
iOS 篇請?zhí)D(zhuǎn)此地址:http://www.reibang.com/p/57734e33da8d