前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Kotlin 协程】协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )

【Kotlin 协程】协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )

作者头像
韩曙亮
发布2023-03-30 18:07:50
6460
发布2023-03-30 18:07:50
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、协程标识 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 状态 ;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、协程标识 Job 实例对象
  • 二、协程生命周期状态
  • 三、协程生命周期状态改变
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档