Android Kotlin之withContext(協程)使用

withContext

kotlin 中 GlobalScope 類提供了幾個創建協程的構造函數:

  • launch: 創建協程
  • async : 創建帶返回值的協程,返回的是 Deferred 類
  • withContext:不創建新的協程,指定協程上運行代碼塊
  • runBlocking:不是 GlobalScope 的 API,可以獨立使用,區別是 runBlocking 裏面的 delay 會阻塞線程,而 launch 創建的不會

withContextt這個函數主要可以切換到指定的線程,並在閉包內的邏輯執行結束之後,自動把線程切回去繼續執行:

coroutineScope.launch(Dispatchers.Main) {      //  在 UI 線程開始
    val image = withContext(Dispatchers.IO) {  // 切換到 IO 線程,並在執行完成後切回 UI 線程
        getImage(imageId)                      // 將會運行在 IO 線程
    }
    avatarIv.setImageBitmap(image)             // 回到 UI 線程更新 UI
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章