Application Not Responding (ANR) errors are triggered when the UI thread of the application is not responding for more than
Additionally, Crashlytics can help pinpoint specific problematic threads. We analyze ANRs, and then, in the Crashlytics dashboard , we tag applicable threads to provide hints on how to debug the ANR.
В следующих разделах этой страницы объясняется значение каждого тега ANR, приводятся примеры ANR с этим тегом и предлагаются рекомендуемые решения для отладки ANR.
Triggered ANR
Поток, заблокированный слишком долго и вызвавший ошибку ANR, помечается этой аннотацией.Triggered ANR .
Проблемным потоком может быть основной поток приложения или любой другой поток, который не отвечает. Однако поток, помеченный какTriggered ANR may or may not be the actual cause of the ANR. To provide insights for debugging and fixing these ANRs, Crashlytics also tags any other threads that are involved in the ANR. In the following sections of this page, learn about the other tags that could be applied to a thread.
Deadlocked
Все потоки, в которых обнаружена взаимоблокировка, приведшая к ошибке ANR, помечаются этой аннотацией.Deadlocked .
A deadlock occurs when a thread enters a waiting state because a required resource is held by another thread, which is also waiting for a resource held by the first thread. If the app's main thread is in this situation, ANRs are likely to happen.
Рекомендация
Проанализируйте потоки, участвующие в тупиковой ситуации, и проверьте ресурсы/блокировки, захваченные этими потоками. Обратитесь к алгоритмам предотвращения тупиковых ситуаций для поиска возможных решений.
IO Root blocking
Любой поток, выполнявший медленные операции ввода-вывода и блокировавший их,Triggered ANR помечается аннотацией.IO Root blocking . ЕслиTriggered ANR не блокируется другими потоками, то...IO Root blocking также являетсяRoot blocking поток.
Рекомендация
В целом, ваше приложение не должно выполнять дорогостоящие операции ввода-вывода в основном потоке. В случае, если основной поток...IO Root blocking можно также использовать строгий режим , чтобы выявить любые непреднамеренные операции ввода-вывода, происходящие в основном потоке.
Root blocking
Любая тема, которая заблокировала тему, помеченную какTriggered ANR обозначается следующим образом:Root blocking тег. Если ветка помечена обоими тегами.Root blocking иTriggered ANR , то нет других потоков, которые блокируют этот поток.
Если таковые имеютсяTriggered ANR ожидали (возможно, транзитивно) другие потоки, они находятсяRoot blocking . Причин, по которым поток может быть основной причиной ANR, может быть множество.
Рекомендация
Сведите к минимуму ресурсоемкие задачи в основном потоке. Используйте рабочие или фоновые потоки для выполнения ресурсоемких задач.
Сведите к минимуму ресурсоемкие операции ввода-вывода, такие как загрузка данных из базы данных, в основном потоке.
Unknown root cause
Тема помечена тегомUnknown root cause tag if it was the thread that triggered the ANR but was idle in the process when the ANR occurred. Crashlytics doesn't have sufficient information to determine the root cause. There is no evident reason why this ANR has occurred.
Рекомендация
Следуйте общим рекомендациям по предотвращению ошибок ANR. Например, определите места в вашем коде, где основной поток приложения может быть занят более