MMKV 元件-快速丶讀丶查丶寫的sp
阿新 • • 發佈:2018-12-12
1.安裝引入
dependencies {
implementation 'com.tencent:mmkv:1.0.10'
// replace "1.0.10" with any available version
}
2.初始化
在Application處初始化 MMKV.initialize(this);
3.增刪改查
預設使用單程序模式,如需切到多程序模式可使用MULTI_PROCESS_MODE,如果要使用多程序且用匿名記憶體,則使用MMKV.mmkvWithAshmemID(Context context, String mmapID, int size, int mode, String cryptKey)
MMKV kv = MMKV.defaultMMKV();
kv.encode("bool", true);
boolean bValue = kv.decodeBool("bool");
kv.encode("int", Integer.MIN_VALUE);
int iValue = kv.decodeInt("int");
kv.encode("string", "Hello from mmkv");
String str = kv.decodeString("string");
4.原理
- 為何速度如此之快,將資料存放於系統的一塊特殊記憶體區域,該記憶體區域會隨著APP的關閉而銷燬,可用於存放一些臨時檔案,因為一切操作都直接在記憶體操作,並且資料結構都是使用Protobuf去實現,該結構採用二進位制存取資料,存取的時候,直接跳到指定位置,讀取指定大小,所以相當快
- 跨程序實現,程序A通過mmap分配的記憶體A,程序B通過mmap分配的記憶體B,B做了修改,A在每次讀取的時候,都需要重新讀一次檔案的狀態,通過檔案的大小和校驗碼,來得知檔案是否做過修改,如已修改,A需要重組記憶體,獲取到了B修改後的資料,從而實現跨程序,其中的讀寫安全操作,都需要加上檔案鎖來實現