gpt4 book ai didi

Android CoroutineScope 完成后自动取消

转载 作者:行者123 更新时间:2023-12-04 07:15:20 28 4
gpt4 key购买 nike

我想知道coroutineScope工作完成后会自动取消。假设我创建了一个 coroutineScope在自定义类中 而不是 ViewModel类(class)或 Fragment / Activity类(class):

class MyClass {
private val backgroundScope = CoroutineScope(Dispatchers.Default)

fun doSomething() = backgroundScope.launch {
//do background work
}
}
在这种情况下,在 之后背景工作完成了,会 backgroundScope自动取消自己?

最佳答案

一个 CoroutineScopeCoroutineContext 组成.一个 CoroutineContext由 2 个主要元素组成,a JobContinuationInterceptor (通常只是一个 CoroutineDispatcher ),其他元素是 CoroutineExceptionHandlerCoroutineName .
如果协程完成,它不会取消作用域(即它的作业)。
即使您取消协程的作业,它也不会取消作用域(即其作业)。因为每次您使用特定范围触发协程时,协程的作业都会成为该范围作业的子作业。
在你的情况下backgroundScope ,您没有指定 Job你自己,如果你深入研究源代码,你会发现在没有 Job 的情况下, 一个 Job提供了实例..

val coroutineJob = backgroundScope.launch { ... }
当这个 coroutineJob完成或被取消,不会取消 Job里面 backgroundScope ,因此 backgroundScope不会被取消。

关于Android CoroutineScope 完成后自动取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68804059/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com