前言
Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。
如果您当前在使用 SharedPreferences 存储数据,请考虑迁移到 DataStore。
个人感觉不是特别好用,有待完善,可以先使用 MMKV,比较成熟了。
使用
1. 导入依赖
//datastore-preferencesimplementation("androidx.datastore:datastore-preferences:1.0.0-rc01")
2. 使用示例
下面的示例方法包含了增加,删除,修改,查询。
/*** @Author: 13009* @CreateDate: 2021/7/26 13:38*@Email:kiwilss@163.com*@Description:* https://developer.android.google.cn/topic/libraries/architecture/datastore*/class DataStoreActivity: AppCompatActivity(R.layout.activity_datastore) {val key = stringPreferencesKey("key")val EXAMPLE_COUNTER = intPreferencesKey("example_counter")private val PREFERENCE_NAME = "DataStore"// At the top level of your kotlin file:private val dataStore: DataStore<Preferences> by preferencesDataStore(name = PREFERENCE_NAME)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)//datastore-preferencesbtnDatastoreGet.setOnClickListener {Log.e(TAG, "onCreate: ")lifecycleScope.launch {//一旦数据修改立马就能监听到dataStore.data.collect {Log.e(TAG, "onCreate: ${it[key]}")}}}btnDatastorePut.setOnClickListener {lifecycleScope.launch {putData()}}btnDatastoreUpdate.setOnClickListener {lifecycleScope.launch {dataStore.updateData {preferencesOf(key to "this is key value - update")}}}btnDatastoreDelte.setOnClickListener {lifecycleScope.launch {dataStore.edit {it[key] = ""}}}}private suspend fun putData() {val pre = this.dataStore.edit {it[key] = "this is key value"}Log.e(TAG, "putData: ${pre[key]}")}}
