Что нужно Handler для передачи информации с фонового потока на основной поток

«Что нужно Handler для передачи информации с фонового потока на основной поток» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Handler позволяет отправлять и обрабатывать сообщения (Message) или задачи (Runnable) между потоками. Для передачи данных с фона на основной поток:

  1. Создаем Handler, привязанный к главному потоку (Looper.getMainLooper()).
  2. Из фонового потока отправляем сообщение или 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()