如果我们在main函数中使用协程,那么协程如何在延迟后恢复执行。就像在这个图像中,协程在主函数中,延迟2秒后代码恢复。所以我只想知道延迟后如何执行返回到代码。我知道状态机和android中的协程是如何工作的。我问的是kotlin的main函数(不是android activity )。

发布于 2021-09-15 16:50:13
如果你知道Android中的协程是如何工作的,我不知道是什么让你感到困惑。协程是非阻塞的,所以一旦延迟完成,print就会被执行。
全局作用域用于启动顶级协程,这些协程在整个应用程序生命周期中运行,并且不会过早取消。
发布于 2021-09-20 01:19:55
GlobalScope.launch {
delay(2000)
print("World)
}
println("Hello")
Thread.sleep(3000)我不会深入讨论使用continuation或state-machine执行协同suspend/resume的细节
如何在延迟后恢复执行协程
因为,你是blocking的主线。Thread.sleep(3000)阻塞主线程达3秒。如果删除Thread.sleep,就会看到不同之处。
在android中,这不是必需的,原因是android UI线程运行在Handler/Looper概念上,这与任何其他线程都是一样的,唯一不同的是,它总是保持主/UI线程处于活动状态,并继续执行来自message-queue的任务。
https://stackoverflow.com/questions/69196491
复制相似问题