![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kotlin协程系列介绍
文章平均质量分 66
Kotlin协程系列介绍
fundroid
Android GDE(谷歌开发者专家)| 互联网大厂移动端架构师
展开
-
【Kotlin】就几行代码?! 用SharedFlow写个FlowEventBus
EventBus 是 Android 中常用的通信方式,借助 Kotlin Flow 几行代码便可以实现一个功能完整的 EventbBus转载 2021-07-17 11:56:48 · 2768 阅读 · 0 评论 -
Kotlin协程介绍(一)基本概念
协程(英文Coroutine)并非一个新概念,早在上世纪60年代Cobol编译器中被首次提出,其目的是将程序分离成多个任务,可以相互配合并且独立运行,co-routine的名字也正体现了互相配合之意。协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。协程的关键是分清挂起和...原创 2020-01-27 14:07:53 · 881 阅读 · 0 评论 -
Kotlin协程介绍(二)实现原理
通过Kotlin协程介绍(一)我们了解到协程可以让顺序的代码实现CPS的效果,实际上协程的本质就是在编译期将顺序代码变为CPS。协程用suspend关键字声明一个挂起函数suspend fun delay(time: Int)挂起函数经过编译后,在jvm里会变成一个CPS://Continuation用来实现CPS的回调interface Continuation<T>...原创 2020-01-27 17:16:12 · 689 阅读 · 0 评论 -
Kotlin协程介绍(三)创建协程 launch
通过Kotlin协程介绍(二)我们知道协程会将挂起函数(suspend函数)在编译期转换为CPS,suspend函数只能在协程或者另一个suspend中运行,那么如何创建一个协程呢?CoroutineScope.launch可以通过GlobalScope.launch创建并立即启动一个协程GlobalScope.launch { val start = System.curr...原创 2020-01-27 20:05:16 · 1299 阅读 · 0 评论 -
Kotlin协程介绍(四)创建协程 async/await
Kotlin协程介绍(四)创建协程 launch中介绍了可以使用launch创建并启动一个协程,除此之外还可以通过async创建并启动一个协程:public fun <T> CoroutineScope.async( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart =...原创 2020-01-27 20:24:55 · 10002 阅读 · 0 评论 -
Kotlin协程介绍(五)挂起函数
Kotlin协程介绍(二)实现原理中介绍过,挂起函数经过编译后以CPS的形式运行。反之,也可以将CPS转成挂起函数,使之可在协程中使用。这具体是通过suspendCoroutine{}或suspendCancellableCoroutine{}实现的public suspend inline fun <T> suspendCoroutine(crossinline bl...原创 2020-01-28 00:02:35 · 2083 阅读 · 0 评论