赞
踩
Github地址:https://github.com/Tencent/MMKV
MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Win32 / POSIX 平台,一并开源。
加密前数据:
加密后数据:
使用方法:
implementation 'com.tencent:mmkv:1.2.14'
private void mmkv() {
//application中初始化
MMKV.initialize(this);
//创建
MMKV kv = MMKV.defaultMMKV();
// MMKV kv = MMKV.defaultMMKV(1,"123456");
kv.encode("bool", true);
boolean bValue = kv.decodeBool("bool");
Log.e(TAG, "mmkv: " + bValue);
kv.encode("str", "Hello from mmkv");
String str = kv.decodeString("str");
Log.e(TAG, "mmkv: " + str);
}
Jetpack DataStore 是一种改进的新数据存储解决方案,允许使用协议缓冲区存储键值对或类型化对象。DataStore 以异步、一致的事务方式存储数据,克服了 SharedPreferences(以下统称为SP)的一些缺点。DataStore基于Kotlin协程和Flow实现,并且可以对SP数据进行迁移,旨在取代SP。
Preferences DataStore:与SharedPreferences类似,通过键值对存储数据,此实现不需要预定义模式,也不提供类型安全。
Proto DataStore:通过Protocol-Buffers定义存储数据类型以及结构,保证类型安全。
存储的数据:
DataStore没有自带加密方法,需要自行对数据进行加密。
使用方法:
//datastore
implementation "androidx.datastore:datastore-preferences:1.0.0"
// RxJava2
implementation "androidx.datastore:datastore-preferences-rxjava2:1.0.0"
private void dataStore() { Preferences.Key<String> KEY_USER_NAME = new Preferences.Key<>("username"); Preferences.Key<String> KEY_PASS_WORD = new Preferences.Key<>("password"); // RxDataStore<Preferences> dataStore = new RxPreferenceDataStoreBuilder(this, /*name=*/ "settings").build(); // 写入 dataStore.updateDataAsync(prefsIn -> { MutablePreferences mutablePreferences = prefsIn.toMutablePreferences(); mutablePreferences.set(KEY_USER_NAME, "zhangyu"); mutablePreferences.set(KEY_PASS_WORD, "123456"); return Single.just(mutablePreferences); }); //读取 Flowable<String> userNameFlow = dataStore.data().map(prefs -> prefs.get(KEY_USER_NAME)); Flowable<String> userPasswdFlow = dataStore.data().map(prefs -> prefs.get(KEY_PASS_WORD)); Log.e(TAG, "dataStore: username=" + userNameFlow.blockingFirst()); Log.e(TAG, "dataStore: password=" + userPasswdFlow.blockingFirst()); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。