1. 前言
本文主要介绍协程的启动原理,如果没有协程实战经验或者没有Debug过协程的源码,看起来可能会有点费劲,但是如果将来有机会学习协程的源码,那么这篇文章可能会对你有一定的帮助。文章主要是讲解协程启动的流程,简便起见,该过程中涉及到的其它比较重要协程知识点可能只会简单提到,本文不会深入去讲解,后续有空会对他们单独成文。
2. 简单的例子
首先 我们来看一个简单的例子,在主线程中开启一个协程,打印“Hello Coroutines”。通过这个简单的例子讲解协程是如何启动起来的。

接着我们将startCoroutines方法反编译成Java文件

我们看到Kotlin代码中的Lambda表达式变成了Java中的Function2对象,而它对应的具体类是SuspendLambda。
我们注意到它实现了三个方法:
- Object invokeSuspend(Object var1)
- Continuation create(Object value,Continuation completion)
- Object invoke(Object var1,Object var2)


最低0.47元/天 解锁文章
1283

被折叠的 条评论
为什么被折叠?



