使用Kotlin 1.3时,可以使用GlobalScope.launch
启动作业,但我似乎无法弄清的一件事是如何跟踪“ GlobalScope.launch`”返回的Job
并取消所有待处理的作业(如果它们处于活动状态)。
在旧版本的launch
中,可以指定parent = parentJob
,而可以简单地取消parentJob。但是,在使用GlobalScope.launch
时,如何轻松地取消所有待处理的作业,因此从ViewModel的onCleared来看,可以取消所有待处理的作业。
答案 0 :(得分:0)
因此,从根本上讲,您可以让您的ViewModel / AppComptActivity等从CoroutineScope继承。或者,您可以使用如下组成:
```
private val pendingJobs = Job()
private val coroutineScope = CoroutineScope(contextProvider.io + pendingJobs)
...
...
coroutineScope.launch {
withContext(contextProvider.UI) {
}
}
```
然后使用适当的destroy方法调用pendingJobs.cancel()
终止挂起的作业。