本篇解析 example-supervision-02.kt。学习如何在局部代码块中应用监督机制。
1. 核心概念:supervisorScope
supervisorScope 是一个作用域构建器,它会创建一个使用 SupervisorJob 的作用域。
特点:
- 局部隔离:它只作用于该块内部的子协程。
- 子任务独立性:如果块内的一个子任务失败了,它不会导致该作用域内的其他子任务被取消。
- 父级取消依然有效:如果
supervisorScope所在的外部协程被取消,或者supervisorScope内部的代码抛出了异常,所有子协程依然会被取消。
2. 代码解析
1 | try { |
3. 开发者感悟
supervisorScope 是 coroutineScope 的“监督版”。在 Android 开发中,当你需要在一个挂起函数内部并行处理多项不相关的任务(如同时下载 3 张图片),且希望某一张下载失败不要影响其他的下载时,请务必使用 supervisorScope。