寫過 launch、async,程式碼能動,但一遇到協程明明取消了畫面卻還在跑、例外像穿牆一樣繞過 try-catch,就答不出問題出在哪裡。這個系列要補的不是 API 用法,而是那條被你跳過的執行時間軸:協程何時暫停、何時恢復、狀態被誰持有、又在什麼條件下被取消。
系列聚焦純 Kotlin Coroutines 語言機制本身,全系列使用一個示範情境,讓讀者這 30 天走完,拿到的是一套能推理協程行為的心智地圖、而不是只能死記 API 來猜測程式動作。
你大概寫過這樣的程式碼。一個 viewModelScope.launch 包住一段網路請求,一個 async 搭配 awaitAll 平行抓了好幾筆資料,跑起來...
你按下取消鍵,畫面上的轉圈圈圖示卻還在轉。你確定自己呼叫了取消,Log 也印出了取消的訊息,但那個背景工作就是不肯停下來,畫面卡在那裡,好像根本沒聽到你說了什麼...
《Day 01:為什麼你需要協程,從一個會卡住主執行緒的下載函式說起》 停在一個問題上:如果一段程式碼能看起來依序寫下去,遇到等待卻不會卡住主執行緒,那麼它在等...
《Day 02:第一個 suspend function,暫停到底暫停了什麼》 留下一個還沒解開的疑問。suspend function 暫停的時候,一定需要某...