Kotlin协程
文章平均质量分 72
本专栏主要介绍kotlin中协程相关知识点
yu-Knight
雄关漫道真如铁,而今迈步从头越!
多年Android开发经验。
熟悉HTML、CSS、JS、JAVA、Kotlin、PHP等常用开发语言。
展开
-
Kotlin中协程的Channel通道(二)
Kotlin中协程的Channel通道(二)channel中select多路复用复用多个await复用多个ChannelSelectClause使用Flow实现多路复用channel的并发安全协程的并发工具避免访问外部可变状态channel中select多路复用数据通信系统或计算机网络系统中,传输媒体的带宽或容量往往会大于传输单一信号的需求,为了有效地利用通信线路, 希望一个信道同时传输多路信号,这就是所谓的多路复用技术(Multiplexing)。复用多个await两个API分别从网络和原创 2022-02-18 03:37:43 · 719 阅读 · 0 评论 -
Kotlin中协程的Channel通道(一)
Kotlin中协程的Channel通道(一)Channel-通道Channel的容量迭代Channelproduce与actorChannel的关闭BroadcastChannelChannel-通道Channel实际上是一个并发安全的队列,它可以用来连接协程,实现不同协程的通信。 @Test fun `test know channel`() = runBlocking<Unit> { val channel = Channel<Int>()原创 2022-02-18 03:32:56 · 915 阅读 · 0 评论 -
Kotlin中协程的Flow异步流(二)
Kotlin中协程的Flow异步流(二)flow的背压flow的操作符过渡流操作符末端流操作符组合多个流展平流流的异常处理流的完成flow的背压buffer(),并发运行流中发射元素的代码。conflate(), 合并发射项,不对每个值进行处理。collectLatest(),取消并重新发射最后一个值。当必须更改CoroutineDispatcher时,flowOn操作符使用了相同的缓冲机制,但是buffer函数显式地请求缓冲而不改变执行上下文。 fun simpleFlow8() = f原创 2022-02-18 00:54:28 · 1078 阅读 · 0 评论 -
Kotlin中协程的Flow异步流(一)
Kotlin中协程的Flow异步流(一)如何表示多个值?Flow与其他方式的区别Flow应用Flow的冷流Flow的连续性Flow的构建器Flow的上下文启动流Flow的取消Flow的取消检测如何表示多个值?挂起函数可以异步的返回单个值,但是该如何异步返回多个计算好的值呢?//返回了多个值,但是不是异步的 fun simpleList(): List<Int> = listOf(1, 2, 3) fun simpleSequence(): Sequence<In原创 2022-02-18 00:50:25 · 709 阅读 · 0 评论 -
Kotlin中协程的异常处理
文章目录异常处理的必要性异常的传播非根协程异常异常的传播特性SupervisorJobsupervisorScope异常的捕获Android中全局异常处理取消与异常异常聚合异常处理的必要性当应用出现一些意外情况时,给用户提供合适的体验非常重要,一方面,目睹应用崩溃是一个很糟糕的体验, 另一方面,在用户操作失败时,也必须要能给出正确的提示信息。异常的传播协程构建器有两种形式:自动传播异常(launch与actor),向用户暴露异常(async与produce)当这些构建器用于创建一个根协程时(原创 2022-02-14 20:51:29 · 585 阅读 · 0 评论 -
Kotlin中协程的上下文CoroutineContext
文章目录协程的上下文CoroutineContext是一组用于定义协程行为的元素。它由如下几项构成:组合上下文中的元素协程上下文的继承协程上下文的继承协程的上下文 = 默认值 + 继承的CoroutineContext +参数协程的上下文CoroutineContext是一组用于定义协程行为的元素。它由如下几项构成:1.Job:控制协程的生命周期。2.CoroutineDispatcher:向合适的线程分发任务。3.CoroutineName:协程的名称,调试的时候很有用。4.Corouti原创 2022-02-14 20:43:56 · 489 阅读 · 0 评论 -
Kotlin中协程的取消与取消的副作用以及超时任务
Kotlin中协程的取消与取消的副作用以及超时任务协程取消CPU密集型任务取消协程取消的副作用不能取消的任务超时任务协程取消取消作用域会取消它的子协程。被取消的子协程并不会影响其余兄弟协程。协程通过抛出一个特殊的异常CancellationException来处理取消操作。所有kotlinx.coroutines中的挂起函数(withContext、delay等)都是可以取消的。@Test fun `test scope cancel`() = runBlocking<Uni原创 2022-02-14 16:30:47 · 780 阅读 · 0 评论 -
Kotlin中协程的Job对象
Kotlin中协程的Job对象Job对象Job的生命周期 Job对象对于每一个创建的协程(通过launch或者async),会返回一个Job实例,该实例是协程的唯一标识,并且负责管理协程的生命周期。一个任务可以包含一系列状态:新创建(New)、活跃(Active)、完成中(Completing)、已完成(Completed)、取消(Cancelling)和已取消(Cancelled)。虽然我们无法直接访问这些状态,但是我们可以访问Job的属性:isActive、isCancelled和isCom原创 2022-02-14 16:23:50 · 545 阅读 · 0 评论 -
Kotlin中协程的启动模式与作用域构建器
Kotlin中协程的启动模式与作用域构建器协程的启动模式协程的作用域构建器coroutineScope与runBlockingcoroutineScope与supervisorScope 协程的启动模式1.DEFAULT: 协程创建后,立即开始调度,在调度前如果协程被取消,其将直接进入取消响应的状态。2.ATOMIC: 协程创建后,立即开始调度,协程执行到第一个挂起点之前不响应取消3.LAZY: 只有协程被需要时,包括主动调用协程的start、join或者await等函数时才会开始调度,如果调度前原创 2022-02-14 01:35:04 · 421 阅读 · 0 评论 -
Kotlin中协程理解与实战(二)
Kotlin中协程理解与实战(二)协程构建器一.launch与async构建器都用来启动新协程二,等待一个作业 协程构建器一.launch与async构建器都用来启动新协程1.launch,返回一个Job并且不附带任何结果值。2.async, 返回一个Deferred, Deferred也是一个Job, 可以使用.await()在一个延迟的值上得到它最终结果。二,等待一个作业1.join与await2.组合并发 /** 使用 runBlocking 把主线程包装成协程 顶原创 2022-02-14 01:22:00 · 581 阅读 · 0 评论 -
Kotlin中协程理解与实战(一)
Kotlin中协程理解与实战(一)协程基于线程,它是轻量级线程在Android中协程用来解决什么问题1.处理耗时操作,这种任务常常会阻塞主线程。2.保证主线程安全,即确保安全地从主线程调用任何suspend函数。协程是:suspend -也称为挂起或暂停,用于暂停执行当前协程,并保存所有局部变量;resume -用于让已暂停的协程从其暂停处继续执行挂起函数1.使用suspend关键字修饰的函数叫作挂起函数。2.挂起函数只能在协程体内或其他挂起函数内调用调度器-Dispatchers.Main-Dispatc原创 2022-02-14 01:08:52 · 435 阅读 · 0 评论