Запретить приложениеНеответять во время отладки
Я совершенно новый для Android и имею проблему отладки. Я знаю, для чего нужен ANR, и не вижу их, когда я запускаю свое приложение в обычном режиме. Однако, когда я пытаюсь отладить мой BoradcastReceiver, я слишком медленный и получаю сообщение ANR.
Есть ли способ отключить ANR во время сеансов отладки? Я мог бы использовать оператор журнала, чтобы узнать, что происходит, но это раздражает....
edit: на самом деле, я не хочу подавлять ANR в LogCat, я хочу сказать, что андроид не бросает ANR во время отладки. Я имею в виду позволить вещательным приемникам принимать более 5 секунд для запуска. Но я думаю, это будет невозможно, и вместо этого я должен делегировать службу, которой разрешено работать дольше, что также облегчает отладку.
Спасибо заранее!
здоровается
Ответы
Ответ 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