gpt4 book ai didi

android - 是否可以在没有流的情况下从 DataStore 读取/写入原始类型?

转载 作者:行者123 更新时间:2023-12-05 04:50:27 25 4
gpt4 key购买 nike

是否可以只从 DataStore 读取/写入基本类型?例如,我只想读取一个 Int。我不希望任何 Flow 缠绕在它周围。只是普通的 Int

最佳答案

在写法上,没有用到flows。您可以保存原语,因为它在 documentation 中概述。除非您另有说明,否则这将在后台线程上完成。

对于读取,DataStore 只返回一个流是有原因的。正如@CommonsWare 在评论中所说:“读取值可能需要磁盘或其他形式的 I/O,因此他们选择实现响应式(Reactive) API,以便可以在后台线程上执行 I/O。”

通过使用挂起函数,您可以返回一个 Int,正如您在流中使用 first() 终端运算符所描述的那样,它返回发出的第一个值。

suspend fun read(): Int {

return dataStore.data.first()[KEY] ?: DEFAULT_VALUE
}

如果您确实需要同步调用,那么您可以结合使用 runBlockingfirst() 来阻止线程,但是正如他们在 documentation 中警告的那样:

Avoid blocking threads on DataStore data reads whenever possible. Blocking the UI thread can cause ANRs or UI jank, and blocking other threads can result in deadlock.

因此,如果这是必要的,则您的应用的总体设计可能存在问题。

关于android - 是否可以在没有流的情况下从 DataStore 读取/写入原始类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67265984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com