首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataStore AndroidStudio

DataStore AndroidStudio
EN

Stack Overflow用户
提问于 2020-10-21 21:22:57
回答 1查看 264关注 0票数 1

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

我真的得到了:

代码语言:javascript
复制
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类中。

代码语言:javascript
复制
GlobalScope.launch {
    StoreToken(context).storeToken("key")
}

所以现在当我试着读它的时候,我会这样做:(我可能画错了点):

代码语言:javascript
复制
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


    }
}

我尝试了很多方法来读它(迭代,字符串,... )我认为这可能是一个异步错误,或者我的思考过程在异步时很糟糕

EN

回答 1

Stack Overflow用户

发布于 2020-10-21 21:34:46

我找到了解决方案::

代码语言:javascript
复制
GlobalScope.launch {
        storeToken.accessCipher.collect {
            println(it)
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64464480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档