美文网首页Jetpack
深入学习DataStore(二),使用 Preferences

深入学习DataStore(二),使用 Preferences

作者: 不思进取的码农 | 来源:发表于2020-10-26 16:40 被阅读0次

    目录

    深入学习DataStore(一),Google为什么放弃SharedPreferences
    深入学习DataStore(二),使用 Preferences DataStore存储数据
    深入学习DataStore(三),迁移 SharedPreferences 到 DataStore
    深入学习DataStore(四),如何使用Proto DataStore数据存储

    Preferences DataStore 主要应用在 MVVM 当中的 Repository 层,在项目中使用 Preferences DataStore 非常简单,只需要 4 步

    1. 需要添加 Preferences DataStore 依赖
    implementation "androidx.datastore:datastore-preferences:1.0.0-alpha01"
    
    2.创建 DataStore
      private val PREFERENCE_NAME = "settings"
    val dataStore: DataStore<Preferences> = context.createDataStore(
      name = PREFERENCE_NAME
    )
    
    
    3. 从 Preferences DataStore 中读取数据

    Preferences DataStore 以键值对的形式存储在本地,所以首先我们应该定义一个 Key,与SharedPreferences 的有点不一样,在 Preferences DataStore 中 Key 是一个 Preferences.Key<T> 类型,只支持 Int , Long , Boolean , Float, String
    示例如下

    val EXAMPLE_COUNTER = preferencesKey<Int>("example_counter")
    val exampleCounterFlow: Flow<Int> = dataStore.data
      .map { preferences ->
        // No type safety.
        preferences[EXAMPLE_COUNTER] ?: 0
    }
    
    

    4.向 Preferences DataStore 中写入数据

    Preferences DataStore 中是通过 DataStore.edit() 写入数据的,DataStore.edit() 是一个suspend函数,所以只能在协程体内使用,每当遇到suspend函数以挂起的方式运行,并不会阻塞主线程。

    以挂起的方式运行,不会阻塞主线程 :也就是协程作用域被挂起, 当前线程中协程作用域之外的代码不会阻塞。

    首先我们需要创建一个 suspend 函数,然后调用 DataStore.edit() 写入数据即可。

    suspend fun incrementCounter() {
      dataStore.edit { settings ->
        val currentCounterValue = settings[EXAMPLE_COUNTER] ?: 0
        settings[EXAMPLE_COUNTER] = currentCounterValue + 1
      }
    }
    

    Preferences DataStore总结

    Preferences DataStore使用起来和SharedPreferences一样简单,但目前Google只是发布了alpha,建议大家等稳定版本出了之后再使用.

    (每天学习一点点.每天进步一点点,分享不宜路过点个赞呀,喜欢的点个关注后续更新不断)

    相关文章

      网友评论

        本文标题:深入学习DataStore(二),使用 Preferences

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