用途:在 Kotlin 项目中创建或审查协程相关代码,覆盖结构化并发、调度器、Flow/StateFlow、取消处理与测试。
主要能力:使用 kotlinx.coroutines 的 launch、async 与作用域;用 Flow 处理流(map、retry、共享),StateFlow/SharedFlow 表示状态与 UI 事件;通过 Dispatchers 的 Main、IO、Default 分配线程;用 runTest 与 StandardTestDispatcher 编写测试。
必要用法与规则:每个 launch 必须有明确作用域(viewModelScope、lifecycleScope 或 use case 的 coroutineScope),不使用 GlobalScope;向上传递 CoroutineContext 与 CancellationException,不用 catch (e: Exception) 吞掉取消;I/O 用 Dispatchers.IO,CPU 用 Default,UI 用 Main;用 withContext 切换调度器;外部 I/O 加 withTimeout;async 只在同一作用域内 await,避免 fire-and-forget;supervisorScope 用于子任务失败不影响兄弟任务;NonCancellable 仅用于 finally 清理。Flow 默认冷流,stateIn/shareIn 需显式 SharingStarted 与 ViewModel 作用域,catch 放在 UI 链末端,flatMapLatest 用于输入相关查询,SharedFlow 用于一次性事件。Android 中用 lifecycle.repeatOnLifecycle 收集,Room/DataStore 已提供 Flow。
适用场景:Android ViewModel、use case、数据层并发与流式状态管理,以及相关单元测试。
限制:资料未提供安装命令、版本要求、收费与平台信息;若项目已使用 Flow,不应新引入 RxJava,但需保留遗留 Rx 代码。反模式包括 GlobalScope.launch、生产环境 runBlocking、无 awaitClose 的 callbackFlow、用 delay 做测试同步、SharedFlow(replay=1) 冒充 StateFlow。