通过async 或者 launch 创建的方法体会返回一个Job实例,该实例是携程的唯一标识,并且负责管理协程的生命周期。
一个任务可以包含一系列的状态,
新创建(New),活跃(Active),完成中(Completing)已完成 (Completed)、取消中(Cancelling)和已取消(Cancelled)
虽然我们无法直接访问这些状态,但是我们可以通过访问Job的属性
isActive\isCancelled\isCompleted
如果协程出于活跃状态,
协程运行出错或调用job.cancel()
都会将当前任务置为取消中(Cancelling)状态(isActive=false,isCancelled=true)
当所有子协程都完成后,协程会进入取消(Cancelled)状态,此时 isCompleted=true