在withContext方法里如果开启一个新的协程,当此协程完成后,这个withContext才算完成
ElinCo.launch {
Log.d("tta", "11111")
delay(1000)
Log.d("tta", "2222")
testMyDat()
Log.d("tta", "5555")
}
private suspend fun testMyDat() = withContext(Dispatchers.IO) {
Log.d("tta", "3333")
launch (Dispatchers.IO) {
delay(6000)
Log.d("tta", "3333结束循环中...")
}
delay(3000)
Log.d("tta", "44444")
}
上述代码使用delay来代替其他的一些任务,然后需要注意的事:testMyDat()
此方法里开启了一个新协程,整个方法实际会等9s
即withContext()里的,会等这个launch开启的子job完成(如果这里开了个while循环,就直接导致外层ElinCo.launch
里面执行到testMyDat()
后会直接一直等待了)
评论区