Android Kotlin会工作并等待完成以执行其他任务

时间:2020-10-12 13:33:19

标签: android kotlin asynchronous kotlin-coroutines

我想执行一些工作,然后等待结果。得到结果后,我想继续执行代码。我不想阻止UI线程。

例如,我想在相同的功能“ doCoroutineWork”中使用该功能:

//PseudoCode//

fun doCoroutineWork()
{
  val result = doSomeWorkInBackground
  someOtherFunctionCall(result)
}

所以我要做的是在调用doSomeWorkInBackground时执行一些工作,等待结果,然后在调用新函数someOtherFunctionCall的同时获得第一个结果。 最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

首先,您应该使doCoroutineWork成为暂停函数,例如: suspend fun doCoroutineWork()

然后,您必须从coroutineScope调用它,在lifecycleOwner(活动,片段)中可以调用

lifecycleScope.launch {
  val result = doCoroutineWork()
  someOtherFunctionCall(result)
}

或者在ViewModel中,您可以访问viewModelScope

还可以使用withContext(Dispatchers.XY)来切换所需的线程