[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/android/appnotresponding":3,"mdc--hc4utl-key":478,"mdc--6v1rdo-key":489,"mdc--x59097-key":497,"mdc-6ghd60-key":505,"mdc-qly4fa-key":513,"mdc--wxv1hy-key":521,"mdc--4aovs3-key":529,"mdc-9ep6qq-key":537,"mdc-degu7o-key":545,"related-/errors/android/crashreport,/errors/android/permissiondenied,/guides/android/performance-tuning":553},{"id":4,"title":5,"appliesTo":6,"author":10,"body":11,"canonical":411,"code":25,"createdAt":412,"description":413,"difficulty":414,"draft":415,"estimatedTime":416,"extension":417,"faq":418,"howToSteps":431,"howToTotalTime":447,"image":411,"keywords":448,"locale":457,"meta":458,"navigation":459,"path":460,"platform":461,"related":462,"section":466,"seo":467,"severity":468,"stem":469,"summary":470,"tags":471,"twitterCreator":411,"twitterSite":411,"type":476,"updatedAt":412,"__hash__":477},"content_ru/errors/android/appnotresponding.md","Решение ошибки ANR: Как исправить зависающие приложения Android",[7,8,9],"Android 6.0+","Android 10+","приложения с targetSdkVersion 28+","FixPedia Team",{"type":12,"value":13,"toc":399},"minimark",[14,19,39,42,46,103,107,112,115,150,160,164,167,172,238,250,254,257,298,302,305,339,343,346,357,360,363,367,395],[15,16,18],"h2",{"id":17},"что-означает-ошибка-anr","Что означает ошибка ANR",[20,21,22,26,27,30,31,34,35,38],"p",{},[23,24,25],"strong",{},"ANR"," (Application Not Responding) — это системное диалоговое окно Android, которое появляется, когда главный поток приложения не отвечает более 5 секунд. Пользователь видит три кнопки: ",[23,28,29],{},"«Подождать»",", ",[23,32,33],{},"«Закрыть»"," и ",[23,36,37],{},"«Отправить отчет»",". Если выбрать «Подождать», система дает приложению еще время на реакцию, но в большинстве случаев приложение все равно закрывается.",[20,40,41],{},"Ошибка ANR блокирует любое взаимодействие с приложением: нажатия, скроллинг, ввод текста. Она обычно возникает в момент, когда основной поток (UI thread) занят тяжелой операцией и не успевает обрабатывать события от системы.",[15,43,45],{"id":44},"причины-возникновения","Причины возникновения",[47,48,49,56,71,87,97],"ul",{},[50,51,52,55],"li",{},[23,53,54],{},"Долгие вычисления на главном потоке"," — например, сложный математический алгоритм, обработка изображений или криптографические операции без переноса в фон.",[50,57,58,61,62,66,67,70],{},[23,59,60],{},"Блокирующие сетевые запросы"," — прямой вызов ",[63,64,65],"code",{},"HttpURLConnection"," или ",[63,68,69],{},"OkHttp"," на главном потоке без использования асинхронности.",[50,72,73,76,77,30,80,66,83,86],{},[23,74,75],{},"Блокировка базы данных"," — тяжелые запросы к SQLite или Room без использования ",[63,78,79],{},"AsyncTask",[63,81,82],{},"Coroutines",[63,84,85],{},"WorkManager",".",[50,88,89,92,93,96],{},[23,90,91],{},"Интенсивная работа с виджетами"," — создание сложныхlayout’ов, многократные вызовы ",[63,94,95],{},"inflate"," или использование тяжелых кастомных View без кэширования.",[50,98,99,102],{},[23,100,101],{},"Неочищенные потоки и ресурсы"," — утечки памяти или незакрытые потоки, которые накапливают состояние и eventually блокируют главный поток.",[15,104,106],{"id":105},"способы-решения","Способы решения",[108,109,111],"h3",{"id":110},"способ-1-анализ-логов-и-профилирование","Способ 1: Анализ логов и профилирование",[20,113,114],{},"Первое, что нужно сделать — выявить источник блокировки.",[116,117,122],"pre",{"className":118,"code":119,"language":120,"meta":121,"style":121},"language-bash shiki shiki-themes github-light github-dark","adb logcat *:s ANR:*\n","bash","",[63,123,124],{"__ignoreMap":121},[125,126,129,133,137,141,144,147],"span",{"class":127,"line":128},"line",1,[125,130,132],{"class":131},"sScJk","adb",[125,134,136],{"class":135},"sZZnC"," logcat",[125,138,140],{"class":139},"sj4cs"," *",[125,142,143],{"class":135},":s",[125,145,146],{"class":135}," ANR:",[125,148,149],{"class":139},"*\n",[20,151,152,153,156,157,159],{},"Откройте Android Studio ",[23,154,155],{},"Logcat",", примените фильтр ",[63,158,25],{},", и вы увидите трассировку стека, где главный поток находится в ожидании более 5 секунд. Обратите внимание на имена классов и строки кода — это и есть «виновники».",[108,161,163],{"id":162},"способ-2-перенос-тяжелых-задач-в-фон","Способ 2: Перенос тяжелых задач в фон",[20,165,166],{},"Перенесите все операции, которые занимают больше пары миллисекунд, за пределы главного потока.",[20,168,169],{},[23,170,171],{},"Пример с Kotlin Coroutines:",[116,173,177],{"className":174,"code":175,"language":176,"meta":121,"style":121},"language-kotlin shiki shiki-themes github-light github-dark","lifecycleScope.launch {\n    withContext(Dispatchers.IO) {\n        // Тяжелая операция: загрузка файла, сетевой запрос, работа с БД\n        val data = fetchDataFromServer()\n        withContext(Dispatchers.Main) {\n            // Обновление UI после завершения\n            textView.text = data\n        }\n    }\n}\n","kotlin",[63,178,179,184,190,196,202,208,214,220,226,232],{"__ignoreMap":121},[125,180,181],{"class":127,"line":128},[125,182,183],{},"lifecycleScope.launch {\n",[125,185,187],{"class":127,"line":186},2,[125,188,189],{},"    withContext(Dispatchers.IO) {\n",[125,191,193],{"class":127,"line":192},3,[125,194,195],{},"        // Тяжелая операция: загрузка файла, сетевой запрос, работа с БД\n",[125,197,199],{"class":127,"line":198},4,[125,200,201],{},"        val data = fetchDataFromServer()\n",[125,203,205],{"class":127,"line":204},5,[125,206,207],{},"        withContext(Dispatchers.Main) {\n",[125,209,211],{"class":127,"line":210},6,[125,212,213],{},"            // Обновление UI после завершения\n",[125,215,217],{"class":127,"line":216},7,[125,218,219],{},"            textView.text = data\n",[125,221,223],{"class":127,"line":222},8,[125,224,225],{},"        }\n",[125,227,229],{"class":127,"line":228},9,[125,230,231],{},"    }\n",[125,233,235],{"class":127,"line":234},10,[125,236,237],{},"}\n",[20,239,240,241,30,243,66,246,249],{},"Использование ",[23,242,85],{},[23,244,245],{},"Thread",[23,247,248],{},"Executor"," гарантирует, что система не будет считать приложение «неотвечающим».",[108,251,253],{"id":252},"способ-3-оптимизация-uiпотока","Способ 3: Оптимизация UI‑потока",[20,255,256],{},"Сократите объем работы, который главный поток выполняет каждый кадр.",[47,258,259,269,280,291],{},[50,260,261,262,265,266,86],{},"Используйте ",[23,263,264],{},"RecyclerView"," с view‑holder’ами вместо ",[63,267,268],{},"ListView",[50,270,271,272,275,276,279],{},"Избегайте тяжелых расчетов в методе ",[63,273,274],{},"onDraw"," — переносите графику в отдельный слой или используйте ",[23,277,278],{},"Canvas"," с кэшированием.",[50,281,282,283,286,287,290],{},"Минимизируйте вызов ",[63,284,285],{},"findViewById","; используйте аннотацию ",[23,288,289],{},"@ViewById"," или биндинг(view binding).",[50,292,293,294,297],{},"Включайте ",[23,295,296],{},"StrictMode"," при разработке, чтобы получать предупреждения о блокирующих операциях.",[108,299,301],{"id":300},"способ-4-обновление-и-очистка-ресурсов","Способ 4: Обновление и очистка ресурсов",[20,303,304],{},"Иногда ANR вызывают устаревшие библиотеки или поврежденные кэш‑файлы.",[306,307,308,314],"ol",{},[50,309,310,313],{},[23,311,312],{},"Обновите приложение"," до последней версии из Google Play — разработчики часто выпускают патчи, исправляющие ошибки производительности.",[50,315,316,319,320],{},[23,317,318],{},"Очистите кэш"," и данные приложения:\n",[47,321,322,332],{},[50,323,324,325,86],{},"Перейдите в ",[23,326,327,328,331],{},"Настройки → Приложения → ",[125,329,330],{},"Ваше приложение"," → Очистить кэш",[50,333,334,335,338],{},"При необходимости нажмите ",[23,336,337],{},"Очистить данные"," (будет сброшены настройки, но проблема уйдет, если она вызвана коррупцией кэша).",[108,340,342],{"id":341},"способ-5-переустановка-приложения","Способ 5: Переустановка приложения",[20,344,345],{},"Если вышеуказанные методы не помогли, выполните полную переустановку:",[306,347,348,351,354],{},[50,349,350],{},"Удалите приложение с устройства.",[50,352,353],{},"Перезагрузите устройство.",[50,355,356],{},"Установите приложение заново из магазина или с помощью Android Studio.",[20,358,359],{},"После переустановки проверьте, повторяется ли ошибка ANR.",[361,362],"in-article-ad",{},[15,364,366],{"id":365},"профилактика","Профилактика",[47,368,369,372,375,385,392],{},[50,370,371],{},"Всегда используйте асинхронные механизмы (Coroutines, RxJava, WorkManager) для сетевых запросов и работы с базой данных.",[50,373,374],{},"Пишите unit‑тесты и интеграционные тесты, которые проверяют отклик UI под нагрузкой.",[50,376,377,378,34,381,384],{},"Регулярно профилируйте приложение с помощью ",[23,379,380],{},"Android Studio Profiler",[23,382,383],{},"Systrace",", чтобы находить «узкие места» до выхода обновления.",[50,386,387,388,391],{},"Следите за версиями Android и обновляйте целевой SDK (",[63,389,390],{},"targetSdkVersion","), чтобы использовать последние оптимизации системы.",[50,393,394],{},"Избегайте блокировок на главном потоке даже при коротких операциях — выносите даже простые задачи в фон, если они выполняются в цикле или под высокой нагрузкой.",[396,397,398],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":121,"searchDepth":186,"depth":186,"links":400},[401,402,403,410],{"id":17,"depth":186,"text":18},{"id":44,"depth":186,"text":45},{"id":105,"depth":186,"text":106,"children":404},[405,406,407,408,409],{"id":110,"depth":192,"text":111},{"id":162,"depth":192,"text":163},{"id":252,"depth":192,"text":253},{"id":300,"depth":192,"text":301},{"id":341,"depth":192,"text":342},{"id":365,"depth":186,"text":366},null,"2026-09-03 10:17:17","Подробное руководство по устранению ошибки ANR на Android: восстановите работу приложений и избегайте зависаний за несколько минут при активном использовании устройства","medium",false,"10-20 min","md",[419,422,425,428],{"answer":420,"question":421},"ANR (Application Not Responding) — это системное диалоговое окно Android, которое появляется, когда главный поток приложения заблокирован более 5 секунд. Пользователь не может взаимодействовать с приложением до его ответа.","Что такое ANR и почему оно возникает?",{"answer":423,"question":424},"Да, долгие операции следует переносить в фоновые потоки (Worker, Coroutines, Thread) или использовать асинхронные загрузки с индикатором прогресса.","Можно ли избежать ANR при выполнении долгих операций?",{"answer":426,"question":427},"Используйте логи Catlog или Android Studio Profiler, чтобы найти трейс, где главный поток находится в состоянии ожидания более 5 секунд.","Как проверить, вызывает ли конкретный код ANR?",{"answer":429,"question":430},"Нет, ANR может возникать на любой версии Android, если главный поток блокируется, но с выпуском Android 11 были улучшены инструменты диагностики.","ANR появляется только в новых версиях Android?",[432,435,438,441,444],{"name":433,"text":434},"Проверьте логи ANR","Откройте Android Studio Logcat и фильтруйте по ключевым словам ANR, чтобы определить, какой поток или код вызывает блокировку.",{"name":436,"text":437},"Перенесите тяжелые задачи в фон","Используйте WorkManager, Coroutines или потоки, чтобы выполнять долгие операции (сети, файлы, расчеты) away от главного потока.",{"name":439,"text":440},"Обновите приложение до последней версии","Разработчики часто выпускают патчи, исправляющие производительность и устраняющие原因导致 ANR.",{"name":442,"text":443},"Очистите кэш и данные приложения","Перейдите в Настройки → Приложения → Выберите свое приложение → Очистить кэш (и при необходимости данные), чтобы убрать corrupted файлы.",{"name":445,"text":446},"Переустановите приложение","Если проблема сохраняется, полная переустановка может устранить поврежденные ресурсы или конфликт версий.","PT15M",[449,450,451,452,453,454,455,456],"ошибка ANR Android","как исправить ANR","ANR приложение не отвечает","ошибка приложения не отвечает Android","устранение ANR","ANR причина","Android ANR решение","как убрать ANR","ru_RU",{},true,"/errors/android/appnotresponding","android",[463,464,465],"/errors/android/crashreport","/errors/android/permissiondenied","/guides/android/performance-tuning","Ошибки Android",{"title":5,"description":413},"high","errors/android/appnotresponding","ANR (Application Not Responding) блокирует взаимодействие с приложением на Android. В статье описаны причины и способы быстрого восстановления работы.",[472,25,473,474,461,475],"андройд","ошибка приложения","устранение","debug","error","kyVekw-VcdKINR9dP0-oYCvftjYwNOJxnXC6Fgabt9Y",{"data":479,"body":480},{},{"type":481,"children":482},"root",[483],{"type":484,"tag":20,"props":485,"children":486},"element",{},[487],{"type":488,"value":420},"text",{"data":490,"body":491},{},{"type":481,"children":492},[493],{"type":484,"tag":20,"props":494,"children":495},{},[496],{"type":488,"value":423},{"data":498,"body":499},{},{"type":481,"children":500},[501],{"type":484,"tag":20,"props":502,"children":503},{},[504],{"type":488,"value":426},{"data":506,"body":507},{},{"type":481,"children":508},[509],{"type":484,"tag":20,"props":510,"children":511},{},[512],{"type":488,"value":429},{"data":514,"body":515},{},{"type":481,"children":516},[517],{"type":484,"tag":20,"props":518,"children":519},{},[520],{"type":488,"value":434},{"data":522,"body":523},{},{"type":481,"children":524},[525],{"type":484,"tag":20,"props":526,"children":527},{},[528],{"type":488,"value":437},{"data":530,"body":531},{},{"type":481,"children":532},[533],{"type":484,"tag":20,"props":534,"children":535},{},[536],{"type":488,"value":440},{"data":538,"body":539},{},{"type":481,"children":540},[541],{"type":484,"tag":20,"props":542,"children":543},{},[544],{"type":488,"value":443},{"data":546,"body":547},{},{"type":481,"children":548},[549],{"type":484,"tag":20,"props":550,"children":551},{},[552],{"type":488,"value":446},[]]