I just started learning Kotlin coroutines and was trying to simulate some long time API-calls with showing the result on the UI:
class MainActivity : AppCompatActivity() {
    fun log(msg: String) = println("[${Thread.currentThread().name}] $msg")
    override
    fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        this.setContentView(R.layout.activity_main)
        val resultTV = findViewById(R.id.text) as TextView
        val a = async(CommonPool) {
            delay(1_000L)
            6
        }
        val b = async(CommonPool) {
            delay(1_000L)
            7
        }
        launch(< NEED UI thread here >) {
            val aVal = a.await()
            val bVal = b.await()
            resultTV.setText((aVal * bVal).toString())
        }
    }
}
I don't understand how could I possibly use launch method with main context. 
Unfortunately, I was not able to find anything about delivering results for some specific threads on the official tutorial for coroutines.
 
     
     
     
     
     
     
    