這次通過 Handler 來定時增加 progressBar 的進度,iOS 中可以利用 Timer 來達成。
和 iOS 一樣,在 App 啟動後,系統會建立一個進程,這個進程裡面會有一個主線程,也就是 UI 線程。
所以和開發 iOS 的過程一樣,當使用多線程處理數據並且要更新 UI 的時候,要記得回到主線程上。
我們可以通過 Handler 搭配 Runnable 來達到可以重複執行任務的功能。
Handler 會讓我想到 iOS 中的 Dispatch 可以執行任務和建立隊列。
private var runnable = object:Runnable{
override fun run() {
startIncreaseProgress()
}
}
準備 taskHandler
private var taskHandler = Handler()
通過 postDelayed(Runnable r, long delayMillis) 來開始一個任務,需要提供 runnable 以及執行間隔時間(毫秒)
// start task
taskHandler.postDelayed(runnable, repeatTaskTime)
removeCallbacksAndMessages(Object token) 用來取消任務
// cancle task
taskHandler.removeCallbacksAndMessages(null)
研究:Handler / Message / MessageQueue / Looper 會在之後的動手做中專門練習一下。