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