【问题标题】:Prevent ApplicationNotResponding during debugging在调试期间防止 ApplicationNotResponding
【发布时间】:2011-08-19 16:39:25
【问题描述】:

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

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

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

提前致谢!

问候

【问题讨论】:

  • 我一直在想同样的事情,但仍然没有找到解决这个问题的方法。
  • 2015 仍然没有解决方案......还是我错过了什么?
  • 2017 仍然没有解决方案......还是我错过了什么? :D
  • 2019 仍然没有解决方案......还是我错过了什么?
  • 2021 仍然没有解决方案......还是我错过了什么?

标签: android debugging android-anr-dialog


【解决方案1】:

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

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

【讨论】:

  • 你知道吗,因为这个选项可用吗?
【解决方案2】:

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

【讨论】:

  • 好像我没有说清楚,我的意图是什么。我将编辑我的原始帖子。不过谢谢!
【解决方案3】:

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

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

【讨论】:

  • 我真的很喜欢一个 8 年前的问题仍然提供价值。感谢添加!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多