首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kotlin数据存储

kotlin数据存储
EN

Stack Overflow用户
提问于 2020-11-04 14:57:28
回答 1查看 673关注 0票数 0
代码语言:javascript
复制
var value: String = ""
    fun getValue(key: String, lifecycleOwner: LifecycleOwner): String {
        val data = dataStore.data.map { pre ->
            pre[preferencesKey<String>(key)]
        }
        data.asLiveData().observe(lifecycleOwner, Observer {
            value = it ?: "noData"
            Log.i("MONO", "A | $value")
        })
        return value
    }

返回日志数据为真,但在返回值中为空

EN

回答 1

Stack Overflow用户

发布于 2020-11-04 21:43:07

我不知道Android,但是一个快速的Google表示LiveData.observe()方法添加了一个观察者。

这显然是在使用您在许多语言和框架中找到的标准观测器模式。观察者在相关的时间被告知(即称为)。

请注意,观察者可能不会立即被调用。在这种情况下,显然不是:observe()调用在添加观察者之后返回,而您的value仍然是null;而getValue()方法返回那个null。在以后的某个时候,观察者可能会被调用并设置value,但到那时已经不关心它了。

我不太了解LiveData,无法就该做什么提出建议,但我注意到它有一个getValue()方法,如果该值立即可用,它可能会执行您想做的事情。

如果没有,则必须阻塞,直到调用观察者为止。这个问题似乎表明了一种方法。(答案是用Java表示的,但您可能会从中得到想法。)

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

https://stackoverflow.com/questions/64682480

复制
相关文章

相似问题

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