Что произойдет при длительной работе на главном потоке

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

Ответ

Длительная работа на главном потоке (UI-потоке) приведет к ANR (Application Not Responding), так как система Android требует от приложения быстрого отклика на пользовательские действия (обычно в течение 5 секунд). Это вызовет диалоговое окно с предложением закрыть приложение.

Пример плохого кода:

// Выполнение долгой операции на UI-потоке
button.setOnClickListener {
    Thread.sleep(10000) // 10 секунд блокировки
    textView.text = "Готово!" // ANR!
}

Решение - выносить долгие операции в фоновые потоки:

button.setOnClickListener {
    lifecycleScope.launch(Dispatchers.IO) {
        delay(10000) // Не блокирует UI
        withContext(Dispatchers.Main) {
            textView.text = "Готово!"
        }
    }
}