对于大部分人,学习协程的目的是使用协程,Kotlin 官方的协程框架也是采用这种风格,因此完成了自己打造的框架,对于官方 API 的理解可以提升一个层次,再使用的话自然手到擒来了。源码在每一章节的开头(如果有必要的话)delay 函数CoroutineA 的目标是只使用协程标准库,即到不导入任何 kotlinx.coroutines 包。一个非常方便的函数 delay() 其实属于 kotl...
.gist-file .gist-data {max-height: 400px;max-width: width:100%;}上一节我们已经了解的 Kotlin 协程的基础设施,同时也强调了这些不是面向开发者的,需要经过一些封装才适用于生产。诚然,一般情况下开发者不用学习这些,只需要知道 kotlinx 为我们封装好的框架如何使用就行了。不过既然叫深入 Kotlin 协程,当然不能那么浮...
如无特殊说明,本系列中「协程」默认特指 Kotlin 协程的 JVM 实现。什么是协程好吧...这真是一个极度刁钻困难的问题。哪怕限定于 Kotlin@JVM 中,也难以回答。困难到两位 GDE bennyhuo 霍丙乾与扔物线朱凯竟给出了矛盾的答案。当然,只是字面描述上的矛盾,思想上还是一致的。我目前的答案是:协程就是程序自己调度的线程:它有一个函数体作为协程体,由应用程序自己决定何时执行...
使用协程解决实际问题前两章重点研究了协程如何简化代码,在 Android 中提供主线程安全,以及如何避免协程泄露。在此基础上,协程是一个在 Android 中进行后台处理以及以及简化回调的优秀方案。到目前为止,我们主要关注的是什么是协程以及如何管理它们。在这篇文章中,我们将看看如何使用它们来完成实战任务。协程是一个通用的语言特性,与函数在同一个级别——你可以用它实现任何可以用函数或对象来实现...
本篇将开始整合协程与 Android,探索如何启动并跟踪协程,以便适配 UI 生命周期。为何跟踪协程在第一篇中,我们探索了协程能解决的问题。总结一下,协程是解决这两个问题的优秀方案:在主线程运行长时间任务导致阻塞。从主线程上安全地调用一切 suspend 函数。也即主线程安全(Main-safety)为了解决这些问题,协程通过给常规函数添加 suspend 与 resume 操作,使得协程被...
本系列文章主要关注 Kotlin Coroutine(协程) 是如何工作的,以及如何解决实际的 Android 问题。但是相对来说不会过于深入底层,更偏向于应用。协程解决了什么?Kotlin 协程提供了一个全新的,更加简单地方式来实现异步。协程在 Kotlin 1.3 中正式发布,API 已经稳定,可以用于生产环境。事实上,协程的概念始终存在,最早是 Simula 语言在1967年探索了协程...