協(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 |