【问题标题】:DataStore AndroidStudio数据存储 Android Studio
【发布时间】:2020-10-21 13:22:56
【问题描述】:

我希望使用 android 存储一些数据,并尝试使用数据存储(jetpack android)。

我知道了:

class StoreToken(context:Context){
    private val dataStore = context.createDataStore(name = "token")
    companion object{
        val TOKEN_ACCESS_CIPHER_KEY = preferencesKey<String>("TOKEN_ACCESS_CIPHER")
    }

    suspend fun storeToken(accessCipher: String){
        dataStore.edit {
            it[TOKEN_ACCESS_CIPHER_KEY] = accessCipher
        }
    }

    val accessCipher = dataStore.data.map{ it[TOKEN_ACCESS_CIPHER_KEY] ?: "none" }

}

我将我的 access_cipher_key 存储在那里: 在使用 OkHttp 进行 api 调用的 kotlin 类中

GlobalScope.launch {
    StoreToken(context).storeToken("key")
}

所以现在当我尝试阅读它时,我会这样做:(我点它可能是错误的):


class HomeLoggedActivity : AppCompatActivity() {

    lateinit var storeToken: StoreToken

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home_logged)

        storeToken = StoreToken(this)
        storeToken.accessCipher


    }
}

我已经尝试了很多东西来阅读它(迭代,字符串,...) 我认为这可能是一个异步错误,或者我的思维过程对异步不好

【问题讨论】:

    标签: android kotlin asynchronous coroutine


    【解决方案1】:

    我找到了解决方案::

    GlobalScope.launch {
            storeToken.accessCipher.collect {
                println(it)
    }
    

    只需使用 .collect ! (你需要在一个协程中,这就是我在那里使用 globalScope 的原因)

    【讨论】:

      猜你喜欢
      • 2021-11-15
      • 1970-01-01
      • 2016-06-27
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2012-07-24
      相关资源
      最近更新 更多