iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
自我挑戰組

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

Day 17 | 今天是Coroutiones的 Dispatcher

  • 分享至 

  • xImage
  •  

讀到Dispatcher有種越來越難的感覺QQ
這些太高深的東西對於小萌新來說真的好殺熱情阿
估計今天是Coroutiones的最後一篇
後續還是會繼續看一些基礎的東西
免得自己失去興趣放棄比賽(?)

Dispatcher

Dispatcher的就是完整包裝好提供開發者輕鬆使用的 CoroutineContext Element,Kotlinx coroutine中有四種 Dispatcher 分別是:

  • Dispatchers.Main:就是Main Thread,當需要UI Thread時用他。
  • Dispatchers.Default:執行預設的CoroutineScheduler,另開一個Thread,通常不會跑在Main Thread上**。**
  • Dispatchers.IO:加強的.Default,可以開更多的Thread。
  • Dispatchers.Unconfined:通常會跑在執行該 Coroutines 的 thread 上,但是在 suspend (暫停,之後會提到)後被回復可能會亂跑,使用上需要注意。

像MainScope 的 CoroutineContext 是 supervisorJob() + Dispatcher.Main ,MainScope 實質上是提供一個 Main thread 為 context 的 Scope。

launch 如果沒有傳入參數,就用 CoroutineScope 所定義的 CoroutineContext 。

下例為讀取記憶卡的範例程式:

class CoroutineActivity : AppCompatActivity(), CoroutineScope byMainScope() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_coroutine)

				launch(Dispatchers.Main){
						progressBar.visibility= View.VISIBLE
						readSomeFile()
						progressBar.visibility= View.GONE
				}
}

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

尚未有邦友留言

立即登入留言