我想执行一些工作,然后等待结果。得到结果后,我想继续执行代码。我不想阻止UI线程。
例如,我想在相同的功能“ doCoroutineWork”中使用该功能:
//PseudoCode//
fun doCoroutineWork()
{
val result = doSomeWorkInBackground
someOtherFunctionCall(result)
}
所以我要做的是在调用doSomeWorkInBackground时执行一些工作,等待结果,然后在调用新函数someOtherFunctionCall的同时获得第一个结果。 最好的方法是什么?
答案 0 :(得分:1)
首先,您应该使doCoroutineWork
成为暂停函数,例如:
suspend fun doCoroutineWork()
然后,您必须从coroutineScope
调用它,在lifecycleOwner(活动,片段)中可以调用
lifecycleScope.launch {
val result = doCoroutineWork()
someOtherFunctionCall(result)
}
或者在ViewModel中,您可以访问viewModelScope
还可以使用withContext(Dispatchers.XY)
来切换所需的线程