Kotlin協(xié)程(3)??協(xié)程生命周期

協(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、isCompletedisCancelled 屬性判斷而知,具體說明如下:

狀態(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容