用途:该技能用于在 Kotlin 中实现异步编程,指导协程与 Flow 的进阶用法,包括结构化并发、Flow 转换、异常处理与测试策略。适用场景包括:实现 Kotlin 异步操作、用 Flow 设计响应式数据流、调试协程取消或异常、为挂起函数或 Flow 编写单元测试。
主要能力与用法:
- 结构化并发:始终在已定义的 CoroutineScope 内启动协程,用 coroutineScope 或 supervisorScope 组合并发任务。示例中用 async 并行加载用户与设置数据,再通过 await 汇总为 DashboardData。
- 异常处理:顶层作用域可用 CoroutineExceptionHandler,挂起函数内部用 try-catch 做细粒度控制;示例在 viewModelScope.launch(handler) 中捕获 IOException。
- Flow 响应式流:需要保留的状态用 StateFlow,事件用 SharedFlow。冷流示例对搜索查询做 debounce(300)、flatMapLatest 与 flowOn(Dispatchers.IO);热流示例用 _uiState.asStateFlow() 暴露 UI 状态。
- 并行与错误处理示例:supervisorScope 中一个 async 失败不会取消另一个任务,await 时可能抛出异常。
最佳实践:阻塞 I/O 使用 Dispatchers.IO;作用域不再需要时取消(如 ViewModel.onCleared);单元测试使用 TestScope 与 runTest。避免使用 GlobalScope,以免破坏结构化并发并导致泄漏;不要捕获 CancellationException,除非重新抛出。
排错:若协程测试挂起或结果不稳定,应确保使用 runTest 并向类中注入 TestDispatcher,以便控制虚拟时间。
限制:资料未提供安装命令、平台支持范围、收费或价格信息,也未给出完整 API 参考,相关内容暂未提供。