日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MMKV_MMKV——1.使用

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。