Ответ
ANR (Application Not Responding) — ошибка, возникающая, когда UI-поток блокируется дольше 5 секунд (для BroadcastReceiver — 10 секунд). Это приводит к диалогу "Приложение не отвечает".
Причины:
- Долгие операции в UI-потоке (сеть, БД, тяжелые вычисления).
- Взаимоблокировки (deadlocks).
- Проблемы с IPC (межпроцессным взаимодействием).
Как избежать:
- Выносить тяжелые задачи в
Coroutine,RxJava,AsyncTask(deprecated). - Использовать
StrictModeдля детектирования проблем.
// Плохо (вызов в UI-потоке)
Thread.sleep(6000) // ANR!
// Хорошо (вызов в фоне)
lifecycleScope.launch(Dispatchers.IO) {
heavyWork()
}