Ответ
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 поток
}