1、将sharedpreferences迁移到dataStore
2、含有提交,异步提交
3、支持动态创建dataStore
4、提供提前加载dataStore
5、支持提交对象、数组、字符串等
多进程存储
maven { url "https://jitpack.io" }
implementation 'com.github.CMzhizhe:DataStoreProject:1.0.4'
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
//初始化
DataStoreUtil.init(this)
GlobalScope.launch(Dispatchers.IO) {
val list = mutableListOf<String>()
list.add(MainActivity.SHARE_KEY_CAR)
list.add(MainActivity.SHARE_KEY_USER)
//目的是为了提前价值dataStore里面的值
DataStoreUtil.getInstance().preloadDataStore(list)
}
}
}
如果想解决ANR问题,可以有2种方案
1、异步提交
//第一个参数为 你的dataStore名称,第二参数为你存储的key,第三个参数为需要存储的值
DataStoreUtil.getInstance().applyPutString(SHARE_KEY_USER,KEY_SHARE_NAME,"23")
2、对象提交
val testModel = TestModel(1, "王五-${Random().nextInt()}")
DataStoreUtil.getInstance().put(SHARE_KEY_USER, KEY_SHARE_OBJ, testModel)
读取数据
//第一个参数为 你的dataStore名称,第二参数为你存储的key,第三个参数为默认值
DataStoreUtil.getInstance().getString(SHARE_KEY_USER, KEY_SHARE_NAME, "")