協(xié)程的聲明周期是通過 Job 的幾種狀態(tài)體現(xiàn)的,Job協(xié)程有 6 種狀態(tài):
新建狀態(tài)
新建狀態(tài)主要是通過launch函數(shù)創(chuàng)建協(xié)程對象,它僅僅是一個空的協(xié)程對象。活動狀態(tài)
新建協(xié)程調(diào)用start函數(shù)后,它就進入活動狀態(tài)。launch函數(shù)通過start參數(shù)判斷是否啟動協(xié)程。處于活動狀態(tài)的協(xié)程會執(zhí)行協(xié)程體。正在完成狀態(tài)
正在完成狀態(tài)是一個瞬間過渡狀態(tài),從活動狀態(tài)進入到已完成狀態(tài)時經(jīng)歷的中間狀態(tài)。已完成狀態(tài)
協(xié)程成功執(zhí)行完協(xié)程體,就會進入已完成狀態(tài),這是最終狀態(tài),說明這個協(xié)程已經(jīng)停止。正在取消狀態(tài)
在活動狀態(tài)或正在完成狀態(tài)時,如果調(diào)用了cancel函數(shù)則會進入已取消狀態(tài),在此之前要先進入正在取消狀態(tài),正在取消狀態(tài)也是一個瞬間過渡狀態(tài)。-
已取消狀態(tài)
在新建狀態(tài)、活動狀態(tài)或正在完成狀態(tài)時,如果調(diào)用cancel函數(shù)最終都會是已取消狀態(tài),只是新建狀態(tài)沒有經(jīng)歷正在取消狀態(tài),而直接是已取消狀態(tài)。已取消狀態(tài)是最終狀態(tài),使用這個協(xié)程已經(jīng)停止。
Job狀態(tài)
Job 狀態(tài)可以通過 Job 的 isActive、isCompleted 和 isCancelled 屬性判斷而知,具體說明如下:
| 狀態(tài) | isActive | isCompleted | isCancelled |
|---|---|---|---|
| 新建狀態(tài) | false | false | false |
| 活動狀態(tài) | true | false | false |
| 正在完成狀態(tài) | true | false | false |
| 正在取消狀態(tài) | false | false | true |
| 已取消狀態(tài) | false | true | true |
| 已完成狀態(tài) | false | true | false |
