Kotlin 開發第 10 天 ProgressControl ( ProgressBar + Handler )


這次通過 Handler 來定時增加 progressBar 的進度,iOS 中可以利用 Timer 來達成。

  • 提供三個按鈕來操作進度、一個 TextView 顯示進度文字。
  • Start – 每 500 毫秒增加進度 10
  • Pause – 暫停任務
  • Stop –  停止任務並且將進度改為 0
  • 執行任務過程中如果發現進度超過最大值,則停止任務。

ProgressControl

Thread

和 iOS 一樣,在 App 啟動後,系統會建立一個進程,這個進程裡面會有一個主線程,也就是 UI 線程。

所以和開發 iOS 的過程一樣,當使用多線程處理數據並且要更新 UI 的時候,要記得回到主線程上。

Handler & Runnable

我們可以通過 Handler 搭配 Runnable 來達到可以重複執行任務的功能。

Handler

Handler 會讓我想到 iOS 中的 Dispatch 可以執行任務和建立隊列。

  • handleMessage(Message) – 對接受到的消息進行處理
  • post(Runnable) – Runnable  – 對象入隊
  • postAtTime(Runnable, long)  – 指定時間入隊
  • postDelayed(Runnable, long) – 延長指定的時間入隊
  • sendEmptyMessage(Int) – 發送只有標示(int) 的信息
  • sendMessage(Message) – 發送信息
  • sendMessageAtTime(Message, long)  – 在指定時間發送信息
  • sendMessageDelayed(Message, long) – 延長指定的時間發送消息

Runnable 是一個抽象類,提供一個 run() 方法,用來執行任務。

準備 taskHandler

通過 postDelayed(Runnable r, long delayMillis) 來開始一個任務,需要提供 runnable 以及執行間隔時間(毫秒)

removeCallbacksAndMessages(Object token) 用來取消任務


筆記

  • 研究:Handler / Message / MessageQueue / Looper 會在之後的動手做中專門練習一下。

參考

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *