我想编写一个始终在UI /主线程上调用的函数。在该函数中,它将在后台线程上获取文本(需要从设备上的文件访问某些内容),然后将该文本返回到主线程。可以以惯用的方式使用协程吗?
这是我到目前为止所做的,但是我担心它会在主线程上运行:
.required
我想在Android活动中使用此功能:
.required
我正在寻找与使用回调处理异步线程类似的行为,但显然没有回调部分。
为了便于讨论,假设我不能使用LiveData或ViewModels。
答案 0 :(得分:1)
您需要一个suspend
函数
suspend fun getDisplayableName(context: Context): String =
if(someCondition) {
context.getString(R.string.someString)
} else {
withContext(Dispatchers.IO) {
val name = // some background logic, where name may still be null
name.orEmpty()
}
}
}
您将在onCreate
lifecycleScope.launch {
val name = getDisplayableName(this)
}