技能 kotlin-coroutines-expert
📦

kotlin-coroutines-expert

安全

精通 Kotlin Coroutines & Flow

Kotlin Coroutines 和 Flow 可能比较复杂,难以掌握。本技能提供结构化并发、错误处理和异步代码测试的专业模式。

支持: Claude Codex Code(CC)
🥉 73 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“kotlin-coroutines-expert”。 如何并行运行两个 API 调用并独立处理错误?

预期结果:

使用 supervisorScope 运行异步任务,其中一个任务的失败不会取消其他任务。示例:val task1 = async { api.fetchA() }; val task2 = async { api.fetchB() }; 两者可以独立失败而不影响彼此。

正在使用“kotlin-coroutines-expert”。 何时应该使用 StateFlow 与 SharedFlow?

预期结果:

使用 StateFlow 处理需要保留且始终具有当前值的 UI 状态。使用 SharedFlow 处理一次性事件,如导航或显示 toast 消息。

安全审计

安全
v1 • 2/25/2026

Static analysis flagged 26 potential issues (24 external_commands, 2 weak cryptographic). Manual review confirms all are FALSE POSITIVES. The 'external_commands' detections are markdown backtick formatting (e.g., `coroutineScope`) not shell execution. The 'weak cryptographic' detections are misidentified content. This is a legitimate Kotlin Coroutines documentation skill with no security risks.

1
已扫描文件
101
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
85
内容
50
社区
100
安全
83
规范符合性

你能构建什么

后端开发者

在 Kotlin 微服务中实现异步 API 调用和并行数据获取

Android 开发者

在 Android 应用中处理异步 UI 更新和响应式数据流

代码审查员

审查协程代码以确保正确的错误处理和结构化并发模式

试试这些提示

基础协程设置
展示如何在 Kotlin 中为并行 API 调用设置 CoroutineScope
Flow 错误处理
如何在 Kotlin Flow 管道中处理错误?
协程测试
使用 TestScope 为挂起函数编写单元测试
取消处理
解释如何在不捕获 CancellationException 的情况下正确处理协程取消

最佳实践

  • 始终对阻塞 I/O 操作使用 Dispatchers.IO,以避免阻塞主线程
  • 当协程作用域不再需要时取消它们(例如在 ViewModel.onCleared 中)
  • 使用 TestScope 和 runTest 进行具有虚拟时间的确定性协程测试

避免

  • 避免使用 GlobalScope - 它会破坏结构化并发并可能导致内存泄漏
  • 不要捕获 CancellationException,除非你重新抛出它 - 这会破坏协作式取消
  • 当高级 API 足够时,避免使用 suspendCoroutine 或 suspendCancellableCoroutine

常见问题

Kotlin 中的结构化并发是什么?
结构化并发确保协程绑定到生命周期作用域。当作用域取消时,其所有子协程都会被取消,从而防止泄漏。
何时应该使用 supervisorScope 与 coroutineScope?
当你希望任何失败都能取消所有子协程时使用 coroutineScope。当你希望子协程独立失败而不影响兄弟协程时使用 supervisorScope。
如何测试协程?
使用 kotlinx.coroutines.test 中的 TestScope 和 runTest。注入 TestDispatcher 以控制虚拟时间进行确定性测试。
Flow 和 StateFlow 有什么区别?
Flow 是冷流 - 仅在被收集时产生值。StateFlow 是热流 - 它保留当前值并向所有收集器发送。
如何在 Flow 中处理异常?
在管道末尾使用 catch 操作符,或在 flow 构建器内部使用 try-catch。对于重试,使用 retry 或 retryWhen 操作符。
协程内存泄漏的常见原因是什么?
使用 GlobalScope、完成后未取消作用域、不正确地捕获上下文,或持有对永未完成 actor 的引用。

开发者详情

文件结构

📄 SKILL.md