前置知识: Kotlin

协程调度器与上下文

00:00
1 min Advanced 2026/6/14

Kotlin协程调度器与上下文详解:Dispatchers选择与切换。

1. Dispatchers

// 主线程(UI 操作)
withContext(Dispatchers.Main) {
    updateUI()
}

// IO 线程池(网络、文件)
withContext(Dispatchers.IO) {
    val data = fetchData()
}

// 默认线程池(CPU 密集型)
withContext(Dispatchers.Default) {
    heavyComputation()
}

// 不限制(继承父协程调度器)
launch(Dispatchers.Unconfined) { }

2. 调度器选择

调度器线程适用场景
Main1UI 更新
IO64(默认)网络文件数据库
DefaultCPU 排序解析计算
Unconfined固定测试特殊场景

3. 上下文组合

// 组合调度器和异常处理器
val context = Dispatchers.IO + CoroutineExceptionHandler { _, e ->
    Log.e("Coroutine", "Error", e)
}

launch(context) { /* ... */ }

4. withContext 切换

suspend fun loadData(): Data {
    val data = withContext(Dispatchers.IO) {
        api.fetchData()  // IO 操作
    }
    return data  // 自动切回原调度器
}

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式