iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
自我挑戰組

社畜轉行之旅,30天Kotlin學習筆記系列 第 15

Day 15 | 同步與非同步- Coroutines

  • 分享至 

  • xImage
  •  

Coroutines

Coroutines(協同程序)是目前官方推薦的非同步執行方式。

倒數計時器

  1. 使用GlobalScope.launch()建立Coroutines
  2. 傳入Dispatchers.Main以指定Main Thread
  3. Coroutines以迴圈跟delay()實現倒數,由於delay()是Coroutines的內部方法,系統會自動判斷delay()為耗時任務,並切換至Background Thread執行。
//執行於Main Thread
GlobalScope.launch(Dispatchers.Main){
	for(i in 10 downTo 1){
		textView.text="倒數 $i 秒"
		//執行於Background Thread以延遲一秒
		delay(1000)
		}
	//更新畫面
	textView.text = "完成"
}

如果用Thread實作,程式碼會變成.....

Thread{
	for(i in 10 downTo 1){
		runOnUiThread {
			textView.text="倒數 $i 秒"
		}
		//因為Thread.sleep會拋出例外所以用try-catch處理
		try{
				Thread.sleep(1000)
		} catch (e: InterruptedException){
			e.printStackTrace()
		}
		
		runOnUiThread {
			textView.text = "完成"
		}
	
}.start()

上一篇
Day 14 | 同步與非同步- Handler類別
下一篇
Day 16 | 同步與非同步- Coroutines的Scope
系列文
社畜轉行之旅,30天Kotlin學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言