Запретить ApplicationNotResponding во время отладки - PullRequest
15 голосов
/ 19 августа 2011

Я новичок в Android и у меня проблема с отладкой.Я знаю, для чего нужен ANR, и не вижу их при нормальном запуске приложения.Однако, когда я пытаюсь отладить мой BoradcastReceiver, я слишком медленный и получаю сообщение ANR.

Есть ли способ отключить ANR во время сеансов отладки?Я мог бы использовать инструкцию log, чтобы увидеть, что происходит, но это раздражает ....

edit: на самом деле, я не хочу подавлять ANR в LogCat, я хочу сказать андроиду не бросать ANRво время отладки.Я имею в виду, чтобы приемники Broadcast работали дольше 5 секунд.Но я думаю, что это будет невозможно, и вместо этого я должен делегировать службу, которой разрешено работать дольше, что я также могу отладить проще.*

Ответы [ 3 ]

8 голосов
/ 17 декабря 2013

Перейдите в Настройки -> Параметры разработчика и установите флажок Показать все ANR.

Откроется диалоговое окно «Приложение не отвечает» для приложений, работающих в фоновом режиме. Вы можете нажать кнопку «Ждать» в диалоговом окне, чтобы система не убила ваш процесс. Обратите внимание, что диалоговое окно открывается автоматически для приложений, работающих на переднем плане. Для фоновых приложений вы должны включить эту опцию.

1 голос
/ 01 мая 2019

Вы можете найти этот ресурс полезным для вашей проблемы.Ключевые моменты:

  • Используйте -w, чтобы процесс дождался подключения отладчика.Это на самом деле помогает останавливаться на точках останова onCreate ().Флаг отладки сбрасывается после подключения отладчика.В следующий раз приложение будет запускаться обычным способом.
  • Используйте --persistent для ожидания отладчика при каждом запуске процесса.
  • Используйте adb shell am clear-debug-app your.app.package для отмены --persistent
1 голос
/ 19 августа 2011

Нет. Это сообщение обрабатывается через ОС Android, а не через ваше приложение, и его нельзя скрыть в эмуляторе. Если вы не хотите его видеть и ваш BroadcastReceiver правильно принимает вызов, просто не запускает успешный код, вы можете использовать блок try-catch, и вместо сбоя приложения будет обработан перехват, в котором Вы можете сделать тост сообщение или что угодно.

...