本篇解析 example-context-07.kt。探讨父协程如何管理子协程的结束。
1. 核心规则:父协程的责任
父协程总是会等待所有的子协程完成后才结束。
特点:
- 隐式等待:你不需要显式地对每个子协程调用
join()。父协程会感知到其作用域内所有活跃的 Job。 - 结构化并发:这种机制确保了在父任务(如一个网络请求流)宣告完成时,它发起的细节任务也已经全部处理完毕。
2. 代码解析
1 | val request = launch { |
3. 开发者感悟
这是协程设计中非常优雅的一点。它消除了“孤儿协程”的风险。在 Android 中,如果你在 ViewModel 启动了一个任务,这个任务又分发了几个子任务,你只需要关注顶层任务的状态,底层任务的同步由协程库自动完成。