Kotlin 协程协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 协程协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )相关的知识,希望对你有一定的参考价值。
文章目录
一、协程标识 Job 实例对象
通过 launch 或 async 协程构建器 函数 创建 协程 ,
会返回 Job 类型实例对象 ,
该 Job 对象是 协程的 唯一标识 ,
借助该对象可以实现 对 协程 生命周期 的管理 ;
二、协程生命周期状态
协程 生命周期状态 :
- 新创建 New
- 活跃 Active : 通过调用 Job#isActivity 获取当前是否处于 活跃状态 ;
- 完成中 Completing
- 已完成 Completed : 通过调用 Job#isCompleted 获取当前是否处于 已完成状态 ;
- 取消中 Canceling
- 已取消 Cancelled : 通过调用 Job#isCancelled 获取当前是否处于 取消状态 ;
之前的博客 【Kotlin 协程】协程启动 ④ ( 协程启动模式 | 协程构建器启动模式参数 | DEFAULT 模式 | ATOMIC 模式 | LAZY 模式 | UNDISPATCHED 模式 ) 中 , 提到的 取消 协程 后 , 进入 取消响应状态 , 需要 先进入 取消中 Canceling 状态 , 然后再进入 已取消 Cancelled 状态 ;
三、协程生命周期状态改变
通过 launch 或 async 协程构建器 函数 创建 协程 时 状态为 新创建 New 状态 ;
协程 调度执行 后 会变成 活跃 Active 状态 ;
处于活跃状态的协程 有两个分支 , 分别是 协程完成 和 协程取消 :
-
协程完成分支 : 当有 子协程 完成时 , 会进入 完成中 Completing 状态 , 此时会等待其它子协程执行完毕 , 如果 所有的子协程都执行完毕 , 则进入 已完成 Completed 状态 ;
-
协程取消分支 : 调用 Job#cancel() 函数 取消协程 , 会进入到 取消中 Canceling 状态 , 此时不会立刻取消 , 因为该协程中可能还有多个子协程 , 需要等待 所有子协程都取消后 , 才能进入 已取消 Cancelled 状态 ;
以上是关于Kotlin 协程协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )的主要内容,如果未能解决你的问题,请参考以下文章
深入理解Kotlin协程协程的上下文 CoroutineContext
Kotlin 协程协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 )
Kotlin 协程协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 )
Kotlin 协程协程启动 ⑤ ( 协程作用域构建器 | runBlocking 函数 | coroutineScope 函数 | supervisorScope 函数 )
Kotlin 协程协程启动 ⑤ ( 协程作用域构建器 | runBlocking 函数 | coroutineScope 函数 | supervisorScope 函数 )
Kotlin 协程协程启动 ④ ( 协程启动模式 | 协程构建器启动模式参数 | DEFAULT 模式 | ATOMIC 模式 | LAZY 模式 | UNDISPATCHED 模式 )