前言

Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。
如果您当前在使用 SharedPreferences 存储数据,请考虑迁移到 DataStore。
个人感觉不是特别好用,有待完善,可以先使用 MMKV,比较成熟了。

使用

简单介绍一下使用方法,完全参考官网。

1. 导入依赖

  1. //datastore-preferences
  2. implementation("androidx.datastore:datastore-preferences:1.0.0-rc01")

2. 使用示例

下面的示例方法包含了增加,删除,修改,查询。

  1. /**
  2. * @Author: 13009
  3. * @CreateDate: 2021/7/26 13:38
  4. *@Email:kiwilss@163.com
  5. *@Description:
  6. * https://developer.android.google.cn/topic/libraries/architecture/datastore
  7. */
  8. class DataStoreActivity: AppCompatActivity(R.layout.activity_datastore) {
  9. val key = stringPreferencesKey("key")
  10. val EXAMPLE_COUNTER = intPreferencesKey("example_counter")
  11. private val PREFERENCE_NAME = "DataStore"
  12. // At the top level of your kotlin file:
  13. private val dataStore: DataStore<Preferences> by preferencesDataStore(name = PREFERENCE_NAME)
  14. override fun onCreate(savedInstanceState: Bundle?) {
  15. super.onCreate(savedInstanceState)
  16. //datastore-preferences
  17. btnDatastoreGet.setOnClickListener {
  18. Log.e(TAG, "onCreate: ")
  19. lifecycleScope.launch {
  20. //一旦数据修改立马就能监听到
  21. dataStore.data.collect {
  22. Log.e(TAG, "onCreate: ${it[key]}")
  23. }
  24. }
  25. }
  26. btnDatastorePut.setOnClickListener {
  27. lifecycleScope.launch {
  28. putData()
  29. }
  30. }
  31. btnDatastoreUpdate.setOnClickListener {
  32. lifecycleScope.launch {
  33. dataStore.updateData {
  34. preferencesOf(key to "this is key value - update")
  35. }
  36. }
  37. }
  38. btnDatastoreDelte.setOnClickListener {
  39. lifecycleScope.launch {
  40. dataStore.edit {
  41. it[key] = ""
  42. }
  43. }
  44. }
  45. }
  46. private suspend fun putData() {
  47. val pre = this.dataStore.edit {
  48. it[key] = "this is key value"
  49. }
  50. Log.e(TAG, "putData: ${pre[key]}")
  51. }
  52. }

参考

官网