在调试期间阻止ApplicationNotResponding

时间:2011-08-19 16:39:25

标签: android debugging android-anr-dialog

我对Android很陌生并且有调试问题。我知道什么是ANR,并且在我正常运行我的应用程序时看不到它们。但是,当我尝试调试我的BoradcastReceiver时,我太慢并得到ANR消息。

有没有办法在调试会话期间关闭ANR?我可以使用log语句来查看发生了什么,但这很烦人....

编辑:实际上,我不想在LogCat中压制ANR,我想告诉android在调试期间不要抛出ANR。我的意思是允许广播接收器运行时间超过5秒。但我想这是不可能的,而是我应该委托给一个允许运行更长时间的服务,我也可以更容易地调试。

提前致谢!

招呼

3 个答案:

答案 0 :(得分:8)

转到设置 - >开发人员选项并选中显示所有ANR。

这将显示在后台运行的应用程序的“应用程序无响应”对话框。您可以单击对话框中的“等待”按钮以防止系统终止您的进程。请注意,对于在前台运行的应用程序,将自动打开该对话框。对于后台应用程序,您必须启用此选项。

答案 1 :(得分:1)

没有。此消息是通过Android操作系统处理的,而不是您的应用程序,并且无法在模拟器上隐藏它。如果你不想看到它并且你的BroadcastReceiver正确接收了调用,只是没有运行成功的代码,你可以使用try-catch块,而不是你的应用程序崩溃,catch将被处理,你可以制作祝酒词或任何你想要的东西。

答案 2 :(得分:1)

您可能会发现this resource对您的问题很有用。重点:

  • 使用-w使进程等待,直到连接了调试器。这实际上有助于停止onCreate()的断点。附加调试器后,将清除调试标志。下次应用程序将以常规方式启动。
  • 使用--persistent在每次进程启动时等待调试器。
  • 使用php bin/console make:user php bin/console make:migration php bin/console doctrine:migrations:migrate 撤消--persistent