可以使用runBlocking或GlobalScope.launch(Dispatchers.Main)代替协程的launch(IO), 并在handler中使用post方法将操作放到主线程中执行。示例如下:
// 使用runBlocking
runBlocking {
launch(Dispatchers.IO) {
// 在IO线程中执行任务
}.join()
}
// 使用GlobalScope.launch(Dispatchers.Main)
GlobalScope.launch(Dispatchers.Main) {
withContext(Dispatchers.IO) {
// 在IO线程中执行任务
}
}
// handler构造方法中传入主线程looper
val handler = Handler(Looper.getMainLooper())
handler.post {
// 在主线程中执行任务
}