Сбой Android / Google ANR без конкретной причины

У меня есть следующий отчет о сбое от android:

> java.lang.RuntimeException:    at
> android.app.ActivityThread.performLaunchActivity
> (ActivityThread.java:2822)   at
> android.app.ActivityThread.handleLaunchActivity
> (ActivityThread.java:2897)   at android.app.ActivityThread.-wrap11
> (Unknown Source)   at android.app.ActivityThread$H.handleMessage
> (ActivityThread.java:1598)   at android.os.Handler.dispatchMessage
> (Handler.java:105)   at android.os.Looper.loop (Looper.java:251)   at
> android.app.ActivityThread.main (ActivityThread.java:6572)   at
> java.lang.reflect.Method.invoke (Native Method)   at
> com.android.internal.os.Zygote$MethodAndArgsCaller.run
> (Zygote.java:240)   at com.android.internal.os.ZygoteInit.main
> (ZygoteInit.java:767)

В моем проекте не выделен конкретный класс / файл / строка, и нет строки «вызвано», которую обычно можно было бы ожидать при отладке Android.

Поиск в Google любой отдельной строки, кажется, только приводит меня к SO-вопросам об исключениях нулевого указателя, которых нет (и в любом случае я уже знаю, как их отлаживать, поэтому, пожалуйста, воздержитесь от ругательств меня за отладку нулевых указателей).

Мне действительно нужен совет, с чего начать отладку / воссоздание сбоя с этой очень ограниченной трассировкой.

Интересно (возможно), что об этом сообщается только на Android 8.0>, но на большом количестве устройств.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
377
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

ANR, Приложение не отвечает, возникает, когда ваше приложение выполняет слишком много работы в основном потоке, как правило, из-за дискового или сетевого ввода-вывода.

Попробуй это проверить. Думаю можно StrictMode отладить

Ответ принят как подходящий

ANR - это сокращение от Application Not Responding. На сайте разработчиков Android есть статья об отладке этих здесь. Важно понимать, что это означает, что ваше приложение делает что-то, что занимает много времени в потоке пользовательского интерфейса. Распространенные чашки:

  • используя сеть
  • используя диск
  • некоторые интенсивные вычисления
  • доступ к базе данных

Вы знаете, что это происходит в android.app.ActivityThread.performLaunchActivity.

К счастью, у Android есть открытый исходный код, поэтому, если вы погуглите "исходный код Android performLaunchActivity", вы найдете исходный код как главный результат.

Как видите, это код, запускающий ваше приложение. Итак, при запуске вашего приложения что-то происходит очень медленно. Есть много вещей, которые вы можете сделать, чтобы исследовать это:

  • найдите код при запуске приложения, который обращается к диску, сети или базе данных, и переместите его в фоновый поток
  • запустите свое приложение в строгий режим, который предупредит вас о плохом поведении
  • и в статье, указанной выше, есть еще много советов.

Другие вопросы по теме