Подтвердить что ты не робот

Запретить приложениеНеответять во время отладки

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

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

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

Спасибо заранее!

здоровается

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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