如下所示的代码,
launchWithXXX
函数将在MainScope
中运行吗?他们是否为运行这两个作业都创建了相同的协程环境?dispose()
时,两个功能都将被取消吗?class A : CoroutineScope by MainScope() {
fun launchWithGlobalScope() {
GlobalScope.launch(coroutineContext) {
// Run jobs
}
}
fun launchWithClassScope() {
launch {
// Run jobs too
}
}
fun dispose() {
cancel()
}
}
答案 0 :(得分:3)
答案1:否。MainScope
定义了使用UI组件执行操作的范围。因此它在您平台的UI线程中运行。 GlobalScope
是具有自己的线程池的作用域,并使用其中一个线程运行协程。
2的答案:cancel
只会停止示例中的MainScope
以及由此范围创建的所有协程。