什麼是MMKV? MMKV 是基於 mmap 記憶體映射的移動端通用 key-value 組件,底層序列化/反序列化使用 protobuf 實現,性能高,穩定性強。 https://github.com/Tencent/MMKV 為什麼要替代SharedPreferences? 首先 安全性好。 SP ...
什麼是MMKV?
MMKV 是基於 mmap 記憶體映射的移動端通用 key-value 組件,底層序列化/反序列化使用 protobuf 實現,性能高,穩定性強。
https://github.com/Tencent/MMKV
為什麼要替代SharedPreferences?
首先 安全性好。 SP實際上是把鍵值對放到本地文件中進行存儲。如果要保證數據安全需要自己加密。
其次 讀寫速度更快。 MMKV是放在記憶體裡面,通過Ashmem 匿名共用記憶體實現,讀取和寫入更方便。
第三 支持多線程訪問。由於實現機制是放在匿名共用記憶體,你不需要關註記憶體釋放之後的回寫和讀取。對於多線程支持更好。
第四 效率更高。MMKV 使用protobuf進行序列化和反序列化,比起SP的xml存放方式,更加高效。
最重要的是 MMKV支持從 SP裡面進行遷移。
以上這些優點 基本可以作為一個程式員對於代碼 “簡潔、高效、安全、友好、擴展性好”的追求。 所以以後你還用SP嗎?
1.依賴註入
dependencies { implementation 'com.tencent:mmkv:1.0.10' // replace "1.0.10" with any available version }
2.在Application中進行初始化
MMKV.initialize(this);
3.直接使用
import com.tencent.mmkv.MMKV; 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. 分開使用多個MMKV實例例
MMKV* mmkv = MMKV.mmkvWithID("MyID"); mmkv.encode("bool", true);
5. 多進程模式
MMKV* mmkv = MMKV.mmkvWithID("InterProcessKV", MMKV.MULTI_PROCESS_MODE); mmkv.encode("bool", true);