协程速通 · Android

12. 常见陷阱

❌ 主线程做 IO

网络/数据库没包 withContext(Dispatchers.IO),直接卡 UI。记得切线程。

❌ 在 suspend 里用 runBlocking

会阻塞当前线程,违背协程初衷。需要桥接时只在 main/测试用。

❌ 忘记处理 async 异常

async 异常延迟到 await(),不 await 就静默丢失。要么 await 要么 try/catch。

❌ GlobalScope 内存泄漏

用 viewModelScope / lifecycleScope 代替,自动随生命周期取消。

阻塞检测:开启 kotlinx-coroutines-debug 或在测试中用 Dispatchers.setMain + runTest 能快速发现「主线程上的阻塞调用」。

Kotlin 协程速通 · Android 开发 · 内容基于 kotlinx.coroutines 1.7+