Application Not Responding (ANR) - это ошибка, которая возникает в результате приложение не отвечает. Условия возникновения ANR: 👉События ввода (кнопки, касания экрана и пр.) не обрабатываются 5 секунд 👉BroadcastReceiver.onReceive() не был обработан за отведенное время (foreground приложение - 10 сек, background - 60 сек) 👉ContentProvider не завершил выполнение в течение 10 секунд
Как избежать ANR: 👉 Вся работа, несвязанная с отображение, должна выноситься в фоновые потоки 👉 Сложные вычисления производятся в отдельном потоке 👉 Используйте Handler для взаимодействия между Main/UI потоком приложения и рабочими потоками
Удобными способами для выполнения операций в фоне является использование библиотек RxJava или Kotlin Coroutines
В статье также описывается откуда прорастает показ ANR диалога и как он показывается