寫過 launch、async,程式碼能動,但一遇到協程明明取消了畫面卻還在跑、例外像穿牆一樣繞過 try-catch,就答不出問題出在哪裡。這個系列要補的不是 API 用法,而是那條被你跳過的執行時間軸:協程何時暫停、何時恢復、狀態被誰持有、又在什麼條件下被取消。
系列聚焦純 Kotlin Coroutines 語言機制本身,全系列使用一個示範情境,讓讀者這 30 天走完,拿到的是一套能推理協程行為的心智地圖、而不是只能死記 API 來猜測程式動作。
Day 09:Job,協程生命週期的控制把手 結尾留下一個問題:透過 Job 對協程發出取消要求之後,這個協程接下來會怎麼樣,是像拔掉電源一樣說停就停,還是中間...
Day 10:協程取消不是強制中斷,是一場合作 結尾提到一件事:Job 樹負責把取消訊號傳遞到每個角落,Structured Concurrency 界定子協程...
Day 11:小結:Scope、Structured Concurrency、Job、取消如何協同運作 結尾留下一個還沒碰過的問題:這幾天建立的框架,回答的都是...
Day 12:Dispatchers,協程實際跑在哪條執行緒上 結尾留下一個問題:啟動協程時指定的 Dispatcher,具體是用什麼方式跟著協程一起被攜帶著走...
Day 13:Coroutine Context,協程隨身攜帶的那包設定 結尾留下一個問題:協程如果已經在執行了,執行到一半才發現接下來這段程式碼需要換一個 D...
Day 09:Job,協程生命週期的控制把手 結尾留下一個問題:對一個 Job 發出取消要求之後,協程是不是立刻停下。這個問題後來由 Day 10:協程取消不是...
Day 15:一個協程失敗,其他協程要不要一起死,SupervisorJob 登場 結尾留下一個疑問:知道了 SupervisorJob 能讓一個子協程的失敗不...
Day 16:CoroutineExceptionHandler,例外最後會被誰接住 結尾留下一個疑問:既然 CoroutineExceptionHandler...
Day 17:try-catch 在協程裡為什麼有時候沒用 結尾提到,從 Dispatchers 談到那一天,這個階段已經一路建立起協程執行環境與例外治理的主要...
Day 18:小結:協程的執行環境與例外治理工具箱總覽 結尾把系列至今出現過的所有任務攤開來看,下載一張圖片,或者聚合多個來源的結果,本質上都是執行一次、拿到一...