SharedPreferences 平滑迁移到MMKV
Posted 安果移不动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SharedPreferences 平滑迁移到MMKV相关的知识,希望对你有一定的参考价值。
以往,我们习惯封装。SharedPreferences 来对本地数据进行存取
import android.content.Context
import android.content.SharedPreferences
class QuickPreference(context: Context, name: String, mode: Int = Context.MODE_PRIVATE)
private val mSP: SharedPreferences = context.getSharedPreferences(name, mode)
fun clear() = mSP.edit().clear().commit()
fun remove(key: String) = mSP.edit().remove(key).commit()
fun putString(key: String, value: String) = setString(key, value)
fun setInt(key: String, value: Int) = mSP.edit().putInt(key, value).commit()
fun getInt(key: String, def: Int = 0) = mSP.getInt(key, def)
fun setLong(key: String, value: Long) = mSP.edit().putLong(key, value).commit()
fun getLong(key: String, def: Long = 0L) = mSP.getLong(key, def)
fun setBoolean(key: String, value: Boolean) = mSP.edit().putBoolean(key, value).commit()
fun getBoolean(key: String, def: Boolean = false) = mSP.getBoolean(key, def)
fun setFloat(key: String, value: Float) = mSP.edit().putFloat(key, value).commit()
fun getFloat(key: String, def: Float = 0f) = mSP.getFloat(key, def)
fun setString(key: String, value: String) = mSP.edit().putString(key, value).commit()
fun getString(key: String, def: String = "") = mSP.getString(key, def) ?: ""
但是有一天。红米note11 Pro 毫无征兆的出现问题了
Couldn't create directory for SharedPreferences file /data/user/0
巴拉巴拉 直接让应用启动不起来了。
那么就迁移到MMKV ,为了照顾老用户的用户习惯,登录信息等
import android.content.Context
import android.content.SharedPreferences
import com.tencent.mmkv.MMKV
class QuickPreference(context: Context, name: String, mode: Int = Context.MODE_PRIVATE)
init
val sharedPreferences = context.getSharedPreferences(name, mode)
if (sharedPreferences.all.isNotEmpty())
MMKV.defaultMMKV().importFromSharedPreferences(sharedPreferences);
sharedPreferences.edit().clear().apply()
fun clear() = MMKV.defaultMMKV().edit().clear().commit()
fun remove(key: String) = MMKV.defaultMMKV().edit().remove(key).commit()
fun putString(key: String, value: String) = setString(key, value)
fun setInt(key: String, value: Int) = MMKV.defaultMMKV().edit().putInt(key, value).commit()
fun getInt(key: String, def: Int = 0) = MMKV.defaultMMKV().getInt(key, def)
fun setLong(key: String, value: Long) = MMKV.defaultMMKV().edit().putLong(key, value).commit()
fun getLong(key: String, def: Long = 0L) = MMKV.defaultMMKV().getLong(key, def)
fun setBoolean(key: String, value: Boolean) = MMKV.defaultMMKV().edit().putBoolean(key, value).commit()
fun getBoolean(key: String, def: Boolean = false) = MMKV.defaultMMKV().getBoolean(key, def)
fun setFloat(key: String, value: Float) = MMKV.defaultMMKV().edit().putFloat(key, value).commit()
fun getFloat(key: String, def: Float = 0f) = MMKV.defaultMMKV().getFloat(key, def)
fun setString(key: String, value: String) = MMKV.defaultMMKV().edit().putString(key, value).commit()
fun getString(key: String, def: String = "") = MMKV.defaultMMKV().getString(key, def) ?: ""
核心代码就是这段。如果有数据那么 拿来把你。
if (sharedPreferences.all.isNotEmpty())
MMKV.defaultMMKV().importFromSharedPreferences(sharedPreferences);
sharedPreferences.edit().clear().apply()
以上是关于SharedPreferences 平滑迁移到MMKV的主要内容,如果未能解决你的问题,请参考以下文章