Ответ
Handler позволяет отправлять и обрабатывать сообщения (Message) или задачи (Runnable) между потоками. Для передачи данных с фона на основной поток:
- Создаем
Handler, привязанный к главному потоку (Looper.getMainLooper()). - Из фонового потока отправляем сообщение или
Runnableчерез этотHandler.
Пример:
val mainHandler = Handler(Looper.getMainLooper())
thread {
// Фоновый поток
val result = doBackgroundWork()
mainHandler.post {
// Этот код выполнится в основном потоке
updateUI(result)
}
}
Ключевые моменты:
Handlerдолжен быть создан в основном потоке или явно использоватьLooper.getMainLooper()- Можно отправлять как
Runnable, так иMessageчерезsendMessage() - Альтернатива -
View.post()илиActivity.runOnUiThread()