Диалог приложения не отвечает (ANR)
Как вы можете себе представить, если основной поток занят интенсивными вычислениями или чтением данных из сетевого сокета, он не может немедленно ответитьк пользовательскому вводу, такому как касание или пролистывание.
Приложение, которое не реагирует быстро на взаимодействие с пользователем, будет не отвечать на запросы - заметно больше, чем задержка в пару сотен миллисекунд.Это настолько пагубная проблема, что платформа Android защищает пользователей от приложений, которые делают слишком много в главном потоке.
Примечание:
Если приложение не отвечает наВвод пользователя в течение пяти секунд, пользователь увидит диалоговое окно «Приложение не отвечает» (ANR), и ему будет предложено выйти из приложения.
На следующем снимке экрана показан типичный диалог Android ANR:
Android усердно работает над синхронизацией перерисовок пользовательского интерфейса с частотой обновления оборудования.Это означает, что он нацелен на перерисовку со скоростью 60 кадров в секунду - это просто 16,67 мс на кадр.Если мы работаем с основным потоком, который занимает где-то около 16 мс, мы рискуем повлиять на частоту кадров, что приведет к рывкам - анимации заикания, резкой прокрутке и т. Д.Я не хочу бросать один кадр.Джанк, невосприимчивость, и особенно ANR, предлагают очень плохой пользовательский опыт, что приводит к плохим отзывам и непопулярным приложениям.Правило, которым следует придерживаться при создании приложений Android: не блокируйте основной поток!
Примечание:
Android предоставляет полезную настройку строгого режима в параметрах разработчика на каждомустройство, которое будет отображаться на экране, когда приложения выполняют длительные операции в главном потоке.
В платформу Honeycomb была добавлена дополнительная защита (уровень API 11) с введением нового класса исключения, NetworkOnMainThreadExceptionподкласс RuntimeException, который генерируется, если система обнаруживает сетевую активность, инициированную в главном потоке.
Источник:
Асинхронное программирование для Android - второе издание - Helder Vasconcelos -Июль 2016