Как UI поток работает в Android

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

Ответ

UI поток (главный поток) в Android отвечает за обработку пользовательского ввода, отрисовку интерфейса и выполнение операций, связанных с UI. Он должен оставаться отзывчивым, поэтому длительные операции (сеть, БД, сложные вычисления) нужно выносить в фоновые потоки.

Основные правила:

  • Не блокируйте UI поток (ANR при блокировке >5с)
  • Обновляйте UI только из UI потока (иначе CalledFromWrongThreadException)
  • Используйте Handler, AsyncTask (deprecated), Coroutines, RxJava или LiveData для работы с UI из фона

Пример с Handler:

Handler(Looper.getMainLooper()).post {
    textView.text = "Обновлено из фона"
}

Для корутин:

lifecycleScope.launch {
    val data = withContext(Dispatchers.IO) { fetchData() }
    textView.text = data // Автоматически вернётся в UI поток
}