实时数据生成器

问题描述 投票:0回答:1

我正在尝试了解实时数据生成器。据我所知,您需要提供协程上下文、超时和挂起函数来创建实时数据。

协程上下文的默认值为Dispatcher.Main(UI线程)。超时时间为 5 秒。

这是我在 Android 文档中找到的代码

val user: LiveData<User> = liveData {
    val data = database.loadUser() // loadUser is a suspend function.
    emit(data)
}

现在我的问题是我们如何在 Dispatcher.Main 上进行数据库或网络调用

android kotlin kotlin-coroutines android-livedata
1个回答
0
投票

不建议在

Dispatcher.Main
上执行数据库或网络调用,因为这可能会导致 UI 冻结。 使用
liveData
构建器时,您通常希望在后台线程上执行异步操作,例如数据库或网络调用。您可以通过使用
withContext
构建器中的
liveData
函数切换到后台线程,执行操作,然后发出结果来实现此目的。

例如:

import androidx.lifecycle.liveData
import kotlinx.coroutines.Dispatchers

val user: LiveData<User> = liveData(Dispatchers.IO) {
    val data = database.loadUser()
    emit(data)
}
© www.soinside.com 2019 - 2024. All rights reserved.