SuperAPI AI 工具集

kotlin-coroutines-expert

编程与开发

查看项目

更新于 10-16 01:13

技能介绍

用途:在 Kotlin 中实现异步操作、用 Flow 设计响应式数据流、调试协程取消或异常,以及为挂起函数和 Flow 编写单元测试。

主要能力:结构化并发(在明确的 CoroutineScope 内启动协程,用 coroutineScope 或 supervisorScope 组合并发任务);异常处理(顶层作用域用 CoroutineExceptionHandler,挂起函数内用 try-catch 做细粒度控制);Flow 响应式流(StateFlow 保留状态,SharedFlow 处理事件,冷流可 debounce、flatMapLatest、flowOn)。

使用方式:并发加载示例为 coroutineScope 内用 async 启动多个任务再 await 汇总;异常处理在 viewModelScope.launch(handler) 中结合 try-catch 捕获特定异常;Flow 示例对查询做 debounce(300)、flatMapLatest 搜索并 flowOn(Dispatchers.IO),状态用 _uiState.asStateFlow() 暴露。

最佳实践:阻塞 I/O 用 Dispatchers.IO;不再需要时取消作用域(如 ViewModel.onCleared);用 TestScope 和 runTest 做单元测试;不要用 GlobalScope;不要捕获 CancellationException,除非重新抛出。

排障:测试挂起或结果不稳定时,确认使用 runTest 并注入 TestDispatcher 以控制虚拟时间。

限制:仅在任务明确匹配上述范围时使用;输出不能替代针对具体环境的验证、测试或专家评审;缺少必要输入、权限、安全边界或成功标准时应停止并请求澄清。示例为片段,需自行补充导入、仓库接口、Android 生命周期依赖和已安装的协程版本;每个 await 失败需单独处理并重抛取消;SharedFlow 的 replay/buffer 决定无收集者时的投递,并非可靠事件队列;StateFlow 会合并状态变化;测试应覆盖取消与慢速/缺失收集者,而非仅正常路径。