切换线程
所有scopeXX
作用域内为主线程, 可直接更新视图
调度器
协程中的调度器实际上为线程池, 通过切换调度器可以切换到不同线程上
切换调度器¶
禁止的调度器
Dispatchers.Main.immediate
会立即同步执行, 导致catch/finally
函数无效
作用域内部切换¶
有时需开启新的线程处理耗时任务
函数 | 描述 |
---|---|
withMain | 切换到主线程 |
withIO | 切换到IO线程 |
withDefault | 切换到子线程 |
withUnconfined | 切换到无限制调度器, 其取决于上一个执行的线程切换 |
launch | 无返回值的挂起函数, 可指定线程 |
async | 有返回值的挂起函数, 通过await() 返回值, 可指定线程 |
runMain | 切换到主线程, 该函数不属于协程可以在任何地方调用 |
withXX()
协程阻塞挂起launch()/async()
非阻塞执行, 两者区别是有无返回值