当前位置:   article > 正文

Android dataSotre初次尝试_android datastorepreference supend

android datastorepreference supend

这个库是google最近出的,用来替代sp,今天出差回来尝试一下。

1、添加依赖包

  1. // Preferences DataStore
  2. implementation "androidx.datastore:datastore-preferences:1.0.0-alpha02"//datastore
  3. // Proto DataStore
  4. implementation "androidx.datastore:datastore-core:1.0.0-alpha02"
  5. implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2"
  6. implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"//ktolin协程

2、编写工具类

  1. package com.lhm.datastore.datastore
  2. import android.content.Context
  3. import androidx.datastore.DataStore
  4. import androidx.datastore.preferences.Preferences
  5. import androidx.datastore.preferences.createDataStore
  6. import androidx.datastore.preferences.edit
  7. import androidx.datastore.preferences.preferencesKey
  8. import kotlinx.coroutines.flow.Flow
  9. import kotlinx.coroutines.flow.map
  10. object DataStoreUtils {
  11. private val data = preferencesKey<String>("data")
  12. private val name = "user"
  13. private var dataStore:DataStore<Preferences>?=null
  14. /**
  15. * 写入数据
  16. */
  17. suspend fun writeDataToDataStore(context:Context,msg: String){
  18. if(dataStore==null) {
  19. dataStore = context.createDataStore(name = name)
  20. }
  21. dataStore!!.edit {
  22. user->
  23. user[data] = msg
  24. }
  25. }
  26. /**
  27. * 读取数据
  28. */
  29. fun readDataToDataStore(context:Context): Flow<String> {
  30. if(dataStore==null) {
  31. dataStore = context.createDataStore(name = name)
  32. }
  33. return dataStore!!.data.map { preferences: Preferences -> preferences[data] ?: "" }
  34. }
  35. }

3、进行读写操作

  1. package com.lhm.datastore
  2. import androidx.appcompat.app.AppCompatActivity
  3. import android.os.Bundle
  4. import android.util.Log
  5. import android.widget.TextView
  6. import com.lhm.datastore.datastore.DataStoreUtils
  7. import kotlinx.coroutines.*
  8. import kotlinx.coroutines.flow.Flow
  9. import kotlinx.coroutines.flow.collect
  10. class MainActivity : AppCompatActivity(),CoroutineScope by MainScope() {
  11. override fun onCreate(savedInstanceState: Bundle?) {
  12. super.onCreate(savedInstanceState)
  13. setContentView(R.layout.activity_main)
  14. async {
  15. createData()
  16. }
  17. findViewById<TextView>(R.id.tv_getdata).setOnClickListener {
  18. async {
  19. getData()
  20. }
  21. }
  22. }
  23. override fun onDestroy() {
  24. super.onDestroy()
  25. cancel()
  26. }
  27. private suspend fun createData() {
  28. DataStoreUtils.writeDataToDataStore(this,"测试")
  29. }
  30. private suspend fun getData(){
  31. var readDataToDataStore: Flow<String> = DataStoreUtils.readDataToDataStore(this)
  32. readDataToDataStore.collect{
  33. Log.e("tag",it)
  34. }
  35. }
  36. }

这是简单用法,就先这样吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/752817?site
推荐阅读
相关标签
  

闽ICP备14008679号