
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
文章目录0. 引言1. runBlocking()2. receive()3. send()0. 引言在Kotlin官方文档介绍中,Channel是用于协程间的通信的,它的宗旨是:Do not communicate by sharing memory; instead, share memory by communicating. 下面借助官方文档给的一个Channel的使用例子来感受一下这一通
目录1. Channel转化成Flow2. Flow转换程Channel2.1. produceIn()转换方式2.2. broadcastIn转换方式源码中对ChannelFlow的定义为:ChannelFlow是一个Flow,但是使用了Channel对它进行扩展,并且二者始终彼此融合在一起。ChannelFlow是一个虚类,其继承关系图为:ChannelFlow主要是用于Channel与Flo
目录1. select()函数细节2. send()函数细节根据官方文档可知select 表达式可以同时等待多个挂起函数,并选择第一个可用的。select具有一下功能可以细分如下:在多个Channel中选择第一个到达的进行处理;可以对主-从Channel模式进行分流处理,以降低主Channel的压力。下面通过官方的例子来分析Channel的多路复用原理,首先定义两个以不同速率产生字符串的生产者:f
Coroutine挂起从编译代码看挂起从源码看挂起从编译代码看挂起用Kotlin简单写一个Coroutine的小例子,代码如下:@InternalCoroutinesApifun main() {println("main")runBlocking {println("main launch")test1()}}suspend fun test1() {println("test1")delay(
文章目录CoroutineContext的plus operationfold展开操作minusKey减法操作get获取操作CoroutineContext的plus operationCoroutineContext中plus()方法会用到三个方法,这三个方法以虚函数的形式定义在CoroutineContext中:/*** Returns the element with the given [
文章目录1.在使用WMRouter实现通过Path来跳转目标Fragment时,由于自己的问题给目标Fragment的构造函数传了一个Context参数,导致跳转不成功问题。在查找这个问题中熟悉了WMRouter的源码,在这里记录一下。1....







