0
点赞
收藏
分享

微信扫一扫

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


文章目录

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






一、协程标识 Job 实例对象


通过 launch 或 async 协程构建器 函数 创建 协程 ,
会返回 Job 类型实例对象 ,
该 Job 对象是 协程的 唯一标识 ,
借助该对象可以实现 对 协程 生命周期 的管理 ;






二、协程生命周期状态


协程 生命周期状态 :

  • 新创建 New
  • 活跃 Active : 通过调用 Job#isActivity 获取当前是否处于 活跃状态 ;
  • 完成中 Completing
  • 已完成 Completed : 通过调用 Job#isCompleted 获取当前是否处于 已完成状态 ;
  • 取消中 Canceling
  • 已取消 Cancelled : 通过调用 Job#isCancelled 获取当前是否处于 取消状态 ;

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



之前的博客 ​​【Kotlin 协程】协程启动 ④ ( 协程启动模式 | 协程构建器启动模式参数 | DEFAULT 模式 | ATOMIC 模式 | LAZY 模式 | UNDISPATCHED 模式 )​​ 中 , 提到的 取消 协程 后 , 进入 取消响应状态 , 需要 先进入 取消中 Canceling 状态 , 然后再进入 已取消 Cancelled 状态 ;






三、协程生命周期状态改变


通过 launch 或 async 协程构建器 函数 创建 协程 时 状态为 新创建 New 状态 ;



协程 调度执行 后 会变成 活跃 Active 状态 ;



处于活跃状态的协程 有两个分支 , 分别是 协程完成 和 协程取消 :

  • 协程完成分支 : 当有 子协程 完成时 , 会进入 完成中 Completing 状态 , 此时会等待其它子协程执行完毕 , 如果 所有的子协程都执行完毕 , 则进入 已完成 Completed 状态 ;
  • 协程取消分支 : 调用 Job#cancel() 函数 取消协程 , 会进入到 取消中 Canceling 状态 , 此时不会立刻取消 , 因为该协程中可能还有多个子协程 , 需要等待 所有子协程都取消后 , 才能进入 已取消 Cancelled 状态 ;

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


举报

相关推荐

破解 Kotlin 协程(2) - 协程启动篇

0 条评论