如下所示,
launchWithXXX函数会在MainScope中运行吗?它们是否为运行两个作业创建了相同的协同环境?dispose()时,这两个函数会被取消吗?class A : CoroutineScope by MainScope() {
fun launchWithGlobalScope() {
GlobalScope.launch(coroutineContext) {
// Run jobs
}
}
fun launchWithClassScope() {
launch {
// Run jobs too
}
}
fun dispose() {
cancel()
}
}发布于 2019-09-14 07:02:40
回答1:不。MainScope定义了一个对UI组件执行操作的范围。所以它在平台的UI线程中运行。GlobalScope是一个具有自己线程池的作用域,并使用其中的一个线程运行协同器。
回答2:cancel只停止示例中的MainScope和使用此范围创建的所有协同。
https://stackoverflow.com/questions/57932645
复制相似问题