MMKV_MMKV——1.使用
前言
MMKV是有騰訊開發的高性能key-value組件,可以完美替代SharedPreferences。
項目地址:https://github.com/Tencent/MMKV
使用
1.安裝引入
dependencies {
implementation 'com.tencent:mmkv-static:1.1.1'
// "1.1.1" 可以被任何可用的版本替代
}
2.初始化
MMKV的使用也很簡單,經過初始化后就能進行存取數據了,初始化一般放在Application的onCreate()方法中。
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT == 19) {
//一些 Android設備(API level 19)在安裝/更新APK 時可能出錯, 導致 libmmkv.so 找不到。
String dir = getFilesDir().getAbsolutePath() + "/mmkv";
MMKV.initialize(dir, new MMKV.LibLoader() {
@Override
public void loadLibrary(String libName) {
//開源庫[ReLinker](https://github.com/KeepSafe/ReLinker) 專門解決這個問題
ReLinker.loadLibrary(MyApplication.this, libName);
}
});
} else {
//👇初始化代碼,數據默認存儲在:
//context.getFilesDir().getAbsolutePath() + "/mmkv"
MMKV.initialize(this);
}
}
除了上面的方法外,也提供了其他初始化方法,酌情使用:
//👇指定日志級別
initialize(Context context, MMKVLogLevel logLevel)
//👇指定存儲地址和日志級別
initialize(String rootDir)
initialize(String rootDir, MMKVLogLevel logLevel)
//👇MMKV.LibLoader用來解決Android 設備(API level 19)在安裝/更新 APK 時出錯問題
initialize(String rootDir, MMKV.LibLoader loader)
initialize(String rootDir, MMKV.LibLoader loader, MMKVLogLevel logLevel)
3. CRUD 操作
介紹CRUD操作前,首先要了解MMKV支持的數據類型:
支持以下 Java 語言基礎類型:
boolean、int、long、float、double、byte[]
支持以下 Java 類和容器:
String、Set、任何實現了Parcelable的類型
MMKV提供一個默認的全局實例,使用MMKV.defaultMMKV()獲取,然后通過該實例進行CRUD 操作
MMKV kv = MMKV.defaultMMKV();
//所有類型的數據操作類似,👇以布爾值做統一示范
kv.encode("bool", true);
boolean bValue = kv.decodeBool("bool");
kv.removeValueForKey("bool");
kv.removeValuesForKeys(new String[]{"int", "long"});
boolean hasBool = kv.containsKey("bool");
4.區別存儲
MMKV支持區別存儲,可以滿足將數據存儲在不同文件的需求。
MMKV mmkv = MMKV.mmkvWithID("TEST");
mmkv.encode("bool", true);
5.多進程支持
無論是使用defaultMMKV還是mmkvWithID方法,上文介紹的方式都是d單進程的,如果需要多進程支持,需要傳入標志位,如下:
//👇第二個參數是加密密鑰,null表示明文,可以設置加密秘鑰進行加密
MMKV mmkv = MMKV.defaultMMKV(MMKV.MULTI_PROCESS_MODE, null);
MMKV mmkvTest = MMKV.mmkvWithID("TEST", MMKV.MULTI_PROCESS_MODE);
6.SharedPreferences 遷移
如果你之前使用SharedPreferences存儲了大量數據,MMKV提供了API幫助你快速進行數據遷移。
//SharedPreferences preferences = getSharedPreferences("TEST", MODE_PRIVATE);
//將👆SharedPreferences替換為👇MMKV
MMKV preferences = MMKV.mmkvWithID("TEST");
// 👇再將之前SharedPreferences的舊數據遷移至MMKV,并清空SharedPreferences
SharedPreferences old_man = getSharedPreferences("TEST", MODE_PRIVATE);
preferences.importFromSharedPreferences(old_man);
old_man.edit().clear().commit();
// MMKV實現了SharedPreferences和Editor接口,所以之前的數據存儲不需要做任何變化👇
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("bool", true);
editor.putInt("int", Integer.MIN_VALUE);
editor.putLong("long", Long.MAX_VALUE);
editor.putFloat("float", -3.14f);
editor.putString("string", "hello, imported");
// 無需調用 commit(),apply()方法存儲數據,在put時,數據已經進行了存儲,當然調用了也不妨事,MMKV中的這兩個方法都是空實現
//editor.commit();
總結
以上是生活随笔為你收集整理的MMKV_MMKV——1.使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 100个Python实战项目(十二)Py
- 下一篇: 基于boost asio实现的支持ssl