1. 程式人生 > >MMKV 元件-快速丶讀丶查丶寫的sp

MMKV 元件-快速丶讀丶查丶寫的sp

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修改後的資料,從而實現跨程序,其中的讀寫安全操作,都需要加上檔案鎖來實現