首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在main函数中恢复执行协程?

如何在main函数中恢复执行协程?
EN

Stack Overflow用户
提问于 2021-09-15 16:06:08
回答 2查看 182关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2021-09-15 16:50:13

如果你知道Android中的协程是如何工作的,我不知道是什么让你感到困惑。协程是非阻塞的,所以一旦延迟完成,print就会被执行。

全局作用域用于启动顶级协程,这些协程在整个应用程序生命周期中运行,并且不会过早取消。

票数 0
EN

Stack Overflow用户

发布于 2021-09-20 01:19:55

代码语言:javascript
复制
GlobalScope.launch {
   delay(2000)
   print("World)
}
println("Hello")
Thread.sleep(3000)

我不会深入讨论使用continuationstate-machine执行协同suspend/resume的细节

如何在延迟后恢复执行协程

因为,你是blocking的主线。Thread.sleep(3000)阻塞主线程达3秒。如果删除Thread.sleep,就会看到不同之处。

在android中,这不是必需的,原因是android UI线程运行在Handler/Looper概念上,这与任何其他线程都是一样的,唯一不同的是,它总是保持主/UI线程处于活动状态,并继续执行来自message-queue的任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69196491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档