当我在 Android 中运行下面的代码时,它运行良好。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
runBlocking {
launch {
Log.d("Track", "main runBlocking pre : ${Thread.currentThread().name}")
delay(500)
Log.d("Track", "main runBlocking post : ${Thread.currentThread().name}")
}
}
}
Run Code Online (Sandbox Code Playgroud)
它打印
Track: main runBlocking pre : main
Track: main runBlocking post : main
Run Code Online (Sandbox Code Playgroud)
但是,如果我将 Main 上下文提供给runBlocking,如下所示
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
runBlocking(Dispatchers.Main) { // Provide Dispatchers.Main
launch {
Log.d("Track", "main runBlocking pre : ${Thread.currentThread().name}")
delay(500)
Log.d("Track", "main runBlocking post : ${Thread.currentThread().name}")
}
}
}
Run Code Online (Sandbox Code Playgroud)
它挂起而不是运行它。
注: …