协程
# 入门
# 协程 vs 回调
回调是一种很好的模式, 但也存在缺点。过多使用回调的代码可能会变得难以读取和推演。此外, 回调也不允许使用某些语言功能, 例如异常
Kotlin 协程使您能够将基于回调的代码转换为顺序代码。顺序编写的代码通常更易于阅读, 甚至可以使用异常等语言功能
最后, 两者所做的事情完全相同: 等待长时间运行的任务获得结果, 然后继续执行。不过, 两者的代码看起来却截然不同
# CoroutineScope
Kotlin 中, 所有协程都在 CoroutineScope 中运行。作用域在其整个作业期间会控制协程的生命周期。如果取消某个作用域的作业, 则该作用域内启动的所有协程也将取消
# 调度程序
Kotlin 协程提供三个调度程序: Main、IO 和 Default
- Main 调度程序用于在 Android 主线程上运行协
- IO 调度程序针对 IO 工作进行了优化, 例如从网络或磁盘读取内容
- Default 调度程序则针对 CPU 密集型任务进行了优化
# WithContext (opens new window):
在任何调度程序之间切换时, 协程会使用 withContext
# Continuation
# 其他
# suspend
关键字 suspend 是 Kotlin 将函数(即函数类型)标记为可供协程使用的方式。当协程调用标记为 suspend 的函数时, 它不会像常规函数调用一样在函数返回之前进行阻塞, 而是挂起执行, 直到结果就绪为止, 然后从上次停止的位置恢复并使用返回的结果。当它挂起并等待结果时, 它会取消阻塞正在运行它的线程, 以便其他函数或协程可以运行
上次更新: 2025/10/09, 23:53:03