gpt4 book ai didi

android - 如何从 android kotlin 协程获取结果到 UI 线程

转载 作者:搜寻专家 更新时间:2023-11-01 07:41:24 25 4
gpt4 key购买 nike

我不明白 kotlin 协程是如何工作的。我需要在异步线程上做大量工作,然后在 Android 应用程序的 UI 线程上获取结果。有人可以给我一些例子吗?例如

private fun getCountries(){
viewModelScope.launch {
val a = model.getAllCountries()
countriesList.value = a
}
}

将午餐 model.getAllCountries() 异步但最后我如何才能将结果发送到 UI 线程?

最佳答案

嗯!添加到@ianhanniballake 的回答中,

在你的函数中,

private fun getCountries(){
// 1
viewModelScope.launch {
val a = model.getAllCountries()
countriesList.value = a
}
}
  1. 您已经从 viewModel 范围启动了您的 suspend 函数,默认上下文是主线程。

现在 suspend fun getAllCountries 将在其上工作的线程将在 getAllCountries 函数的定义中指定。

所以可以这样写

suspend fun getAllCountries(): Countries {
// 2
return withContext(Disptachers.IO) {
service.getCountries()
}
}
  1. 我们指定一个新线程使用withContext 调用服务器,在从withContext block 返回后,我们回到主线程。

关于android - 如何从 android kotlin 协程获取结果到 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58275459/

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