18

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

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

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

提前致谢!

打招呼

4

3 回答 3

9

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

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

于 2013-12-16T22:01:00.503 回答
1

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

于 2011-08-19T16:49:06.877 回答
1

您可能会发现此资源对您的问题很有用。关键点:

  • 使用 -w 使进程等待,直到附加调试器。这实际上有助于在 onCreate() 的断点处停止。附加调试器后,调试标志被清除。下次应用程序以常规方式启动。
  • 每次进程启动时使用 --persistent 等待调试器。
  • 用于adb shell am clear-debug-app your.app.package撤消 --persistent
于 2019-05-01T13:27:34.050 回答