Что происходит, если приложение долго не отвечает пользователю
Что проверяют
Знаете ли вы, что у зависания в Android есть не только пользовательская, но и системная сторона: сторожевой таймер, диалог ANR, отдельный показатель в консоли разработчика. Проверяют понимание того, чем занят главный поток и что на нём делать нельзя.
Как отвечать
Сначала механика. Главный поток крутит цикл сообщений и обслуживает и отрисовку кадров, и ввод. Занят он, значит кадры не рисуются и интерфейс замирает. Когда система не может доставить событие ввода дольше примерно пяти секунд, она показывает диалог ANR и предлагает закрыть приложение. У широковещательных приёмников и сервисов свои лимиты, и там ANR случается вообще без застывшего экрана.
Дальше причины: сеть и диск в главном потоке, разбор большого ответа, синхронная запись настроек, длинная транзакция базы, ожидание мьютекса, который держит фоновая задача, блокирующий вызов внутри обработчика нажатия.
Затем что делать. Работу выносим в корутины на Dispatchers.IO, результат отдаём через StateFlow, отмену привязываем к жизненному циклу. Долгую фоновую работу отдаём WorkManager. Интерфейсу нужен явный признак ожидания: скелетон или индикатор, кнопка блокируется от повторного нажатия, у запроса есть таймаут и возможность повторить.
И измерение: StrictMode в отладочной сборке ловит дисковые и сетевые операции на главном потоке, профилировщик показывает затянутые кадры, а в консоли разработчика ANR виден как отдельный показатель качества со снимком стека в момент срабатывания.
Где спотыкаются
Называют только пользовательскую сторону, то есть «человек удалит приложение», и не описывают сам механизм ANR. Вопрос технический, ответ про эмоции его не закрывает.
Предлагают AsyncTask и голые потоки. Первый давно выведен из употребления, второй ничего не знает о жизненном цикле экрана, поэтому результат приходит в уничтоженную активность и тянет за собой утечку.
Считают, что достаточно унести в фон сетевые вызовы. Заметная часть зависаний это не сеть, а разбор ответа, работа с базой и паузы сборщика мусора из-за выделения крупных объектов прямо в главном потоке.