JetPack学习之路二:DataStore初体验

Jetpack DataStore是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化的对象。 DataStore使用Kotlin协程和Flow来存储数据,如果目前使用的是SharedPreferences,可以考虑迁移到DataStore。

官方文档直达

DataStore提供了两种不同的实现:Preferences DataStore和Proto DataStore。

  • Preferences DataStore:以键值对的形式存储在本地和 SharedPreferences 类似,但是 DataStore 是基于 Flow 实现的,不会阻塞主线程,并且保证类型安全。

  • Proto DataStore:存储类的对象(typed objects ),通过 protocol buffers 将对象序列化存储在本地,protocol buffers 现在已经应用的非常广泛,无论是微信还是阿里等等大厂都在使用,我们在部分业务场景中也用到了 protocol buffers。

本篇文章简单介绍第一种Preferences DataStore的使用方法。

一、在app下的build.gradle注入依赖

    // Preferences DataStore
    implementation "androidx.datastore:datastore-preferences:1.0.0-alpha02"
    // Proto DataStore
    implementation "androidx.datastore:datastore-core:1.0.0-alpha02"

二、创建Preferences DataStore

 private val dataStore: DataStore = this.createDataStore(
        name = "Data"
    )

三、从Preferences DataStore读取数据

val dataFlow: Flow = dataStore.data
                    .map { preferences ->
                        // No type safety.
                        preferences[dataStoreKey] ?: ""
                    }
                dataFlow.collect { value -> println(value) }

四、存入数据到Preferences DataStore

suspend fun saveData() {
        dataStore.edit { settings ->
//            val currentCounterValue = settings[dataStoreKey] ?: ""
            settings[dataStoreKey] = "我是存入的数据"+System.currentTimeMillis()
        }
    }

此文只介绍了Preferences DataStore的简单使用,还在研究中,后期继续完善。

你可能感兴趣的:(JetPack学习之路二:DataStore初体验)