文章目录

  • 一、协程标识 Job 实例对象
  • 二、协程生命周期状态
  • 三、协程生命周期状态改变

一、协程标识 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 | 取消中 | 已取消 )相关推荐

  1. Kotlin实战指南十四:协程启动模式

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/96008400 本文出自[赵彦军的博客] 文章目录 协程启动 DEFAULT LA ...

  2. vs 启动调用的目标发生异常_协程中的取消和异常 | 取消操作详解

    在日常的开发中,我们都知道应该避免不必要的任务处理来节省设备的内存空间和电量的使用--这一原则在协程中同样适用.您需要控制好协程的生命周期,在不需要使用的时候将它取消,这也是结构化并发所倡导的,继续阅 ...

  3. Kotlin学习笔记22 协程part2 join CoroutineScope 协程vs线程

    参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 1 Job的join方法 import kotlinx.coroutines.* /*** Job的join方法* 它会挂 ...

  4. 王学岗Kotlin协程(三)---协程的上下文与协程的异常处理

    协程的上下文 我们使用构建器Launch去启动协程的时候,都需要指定协程上下文(没有显示指定会使用默认值). 协程上下文(CoroutineContext)是一组用于定义协程的行为元素.它由如下几项构 ...

  5. Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~

    又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...

  6. Kotlin 协程 (1/7篇) - 协程概念 Coroutine

    查看官网最新依赖版本 一.概念 协程:本质就是线程框架.一套基于 Thread(线程) 封装的 工具API(就像 Java 的 Executor .Android 的 AsyncTask Handle ...

  7. 协程入门(一):启动与挂起

    什么是协程 协程: 是一种更为灵活高效的"用户线程",能够选择异步还是同步执行,指定运行的线程. 异步.同步编程 : 是指的协程能够选择自身的启动模式,在当前线程堵塞式运行,还是在 ...

  8. Kotlin 之 协程(四)协程并发

    认识channel channel是一个并发安全的队列,可以连接协程,实现不同协程的通信. Library中定义了几种类型的Channel. 它们在内部能够存储多种元素,只是在send调用是否能够挂起 ...

  9. 【Kotlin 协程】Flow 异步流 ⑤ ( 流的上下文 | 上下文保存 | 查看流发射和收集的协程 | 不能在不同协程中执行流的发射和收集操作 | 修改流发射的协程上下文 | flowOn函数 )

    文章目录 一.流的上下文 1.上下文保存 2.流收集函数原型 3.流发射函数原型 4.代码示例 - 查看流发射和收集的协程 5.代码示例 - 不能在不同协程中执行相同流的发射和收集操作 二.修改流发射 ...

最新文章

  1. 思科ssh验证方式_SSH的应用:一个实例两种验证模式的实现
  2. python polar contour_Python将2darray的最后一行和第二列添加到最后位置 - Polar Contour图...
  3. 决策树:特征分布空间划分方法
  4. [数据结构-严蔚敏版]P71串的抽象数据类型的定义
  5. stl向量_用户定义大小的C ++ STL中的2D向量
  6. 电商领域中SKU和SPU区别比较
  7. hive 如何将数组转成字符串_hive详细笔记(八)-Hive之列转行和行转列(附带讲解视频 )...
  8. 什么是IDE(集成开发环境)?
  9. sharepoint 2007,sharepoint 2010网站的备份还原
  10. 想了很久,我还是来了;天天看blog我也就想自己拥有一个了,好事。。。。坚持。。。。...
  11. Python语言程序设计课程论文——Python小游戏
  12. Python爬虫实例1
  13. [FAQ07665][Camera Drv]摄像头工厂模式(factory Mode)测试失败或者预览画面不吐出动态图像
  14. uniapp获取用户数据昵称为“微信用户”(小程序)@杨章隐
  15. java8中数据类型_Java 8中 基本数据类型
  16. JS 手机号/身份证/银行账号/邮箱/QQ/电话 掩码处理
  17. 为人处事说话技巧思维
  18. 尝试 对网游私人服务器架设的一些接触
  19. mysql非root用户密码,CenterOS 8上修改msql的root密码和新增非root用户步骤
  20. Java与C语言中的锁

热门文章

  1. 机票报价高并发实施的关键路径
  2. CDR 无法安装,解决办法
  3. Spring3 -- IOC容器的基本原理 02
  4. 2022年湖北武汉安全员ABC证一年考几次?什么时候考试呢?
  5. Iconfont-阿里巴巴矢量图标库(笔记)
  6. halcon第二讲:焊点提取
  7. PHP Framework 数据库框架 Medoo 2.1:使用 Medoo 连接MYSQL数据库
  8. 仿网易云音乐播放列表、皮肤样式、歌词滚动、轮播图等
  9. Foxmail7.2不能发送hotmail的邮件的解决
  10. 一名程序员的电脑桌面