Почему используется один поток для работы с UI

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

Ответ

В Android UI-поток (главный поток) используется для работы с интерфейсом, потому что:

  1. Потоко-небезопасность — компоненты UI не поддерживают многопоточность. Если несколько потоков попытаются изменить View одновременно, это приведёт к ошибкам.
  2. Предсказуемость — синхронизация изменений UI в одном потоке упрощает отладку и предотвращает race conditions.
  3. Производительность — Android оптимизирован для рендеринга в главном потоке, а блокировка UI из-за долгих операций приводит к ANR.

Пример ошибки:

// Неправильно — изменение UI в фоновом потоке
thread {
    textView.text = "Updated" // Вызовет исключение
}

Правильный подход — runOnUiThread или Handler:

runOnUiThread {
    textView.text = "Updated"
}

Для фоновых задач используйте Coroutine(Dispatchers.IO), RxJava или AsyncTask (deprecated).