美文网首页JetPackJetpack
JetPack学习之路二:DataStore初体验

JetPack学习之路二:DataStore初体验

作者: Dale_Dawson | 来源:发表于2020-10-27 16:31 被阅读0次

    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<Preferences> = this.createDataStore(
            name = "Data"
        )
    

    三、从Preferences DataStore读取数据

    val dataFlow: Flow<String> = 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初体验

        本文链接:https://www.haomeiwen.com/subject/igjxvktx.html