使用MMKV替代SharedPreferences锌俱,
- 好處:MMKV是微信應(yīng)用程序中使用的一種高效晤郑、小巧、易用的移動(dòng)鍵值存儲(chǔ)框架贸宏。目前在iOS造寝、macOS、Android和Windows上都可以使用吭练。
一诫龙、在app的build.gradle中引入
implementation 'com.tencent:mmkv:1.0.19'
二、在application里初始化
MMKV.initialize(getApplication());
三鲫咽、使用SpUtil如下:
SpUtil.INSTANCE.encode()
SpUtil.INSTANCE.decodeStringSet()
mmkv官方說明:
https://github.com/Tencent/MMKV/wiki/android_tutorial
封裝見完整代碼如下:
object SpUtil {
var mmkv: MMKV? = null
init {
mmkv = MMKV.defaultMMKV()
}
fun encode(key: String, value: Any?) {
when (value) {
is String -> mmkv?.encode(key, value)
is Float -> mmkv?.encode(key, value)
is Boolean -> mmkv?.encode(key, value)
is Int -> mmkv?.encode(key, value)
is Long -> mmkv?.encode(key, value)
is Double -> mmkv?.encode(key, value)
is ByteArray -> mmkv?.encode(key, value)
is Nothing -> return
}
}
fun <T : Parcelable> encode(key: String, t: T?) {
if(t ==null){
return
}
mmkv?.encode(key, t)
}
fun encode(key: String, sets: Set<String>?) {
if(sets ==null){
return
}
mmkv?.encode(key, sets)
}
fun decodeInt(key: String): Int? {
return mmkv?.decodeInt(key, 0)
}
fun decodeDouble(key: String): Double? {
return mmkv?.decodeDouble(key, 0.00)
}
fun decodeLong(key: String): Long? {
return mmkv?.decodeLong(key, 0L)
}
fun decodeBoolean(key: String): Boolean? {
return mmkv?.decodeBool(key, false)
}
fun decodeFloat(key: String): Float? {
return mmkv?.decodeFloat(key, 0F)
}
fun decodeByteArray(key: String): ByteArray? {
return mmkv?.decodeBytes(key)
}
fun decodeString(key: String): String? {
return mmkv?.decodeString(key, "")
}
fun <T : Parcelable> decodeParcelable(key: String, tClass: Class<T>): T? {
return mmkv?.decodeParcelable(key, tClass)
}
fun decodeStringSet(key: String): Set<String>? {
return mmkv?.decodeStringSet(key, Collections.emptySet())
}
fun removeKey(key: String) {
mmkv?.removeValueForKey(key)
}
fun clearAll() {
mmkv?.clearAll()
}
}