【发布时间】:2021-12-28 08:05:13
【问题描述】:
我有以下代码(伪代码)
fun onMapReady()
{
//do some stuff on current thread (main thread)
//get data from server
GlobalScope.launch(Dispatchers.IO){
getDataFromServer { result->
//update UI on main thread
launch(Dispatchers.Main){
updateUI(result) //BREAKPOINT HERE NEVER CALLED
}
}
}
}
正如评论中所说,代码永远不会进入主队列的协程调度。但是,如果我明确使用 GlobalScope.launch(Dispatchers.Main) 而不仅仅是 launch(Dispatchers.Main)
fun onMapReady()
{
//do some stuff on current thread (main thread)
//get data from server
GlobalScope.launch(Dispatchers.IO){
getDataFromServer { result->
//update UI on main thread
GlobalScope.launch(Dispatchers.Main){
updateUI(result) //BREAKPOINT HERE IS CALLED
}
}
}
}
为什么第一种方法不起作用?
【问题讨论】:
标签: kotlin kotlin-coroutines coroutinescope