【问题标题】:Is there a way to debug the app on receiving push notification using GCM?有没有办法在使用 GCM 接收推送通知时调试应用程序?
【发布时间】:2013-07-11 22:59:17
【问题描述】:

最初我的应用程序已关闭,当我收到来自 GCM 推送服务的新消息时,我将在我的班级中从 onMessage() 开始一个新活动,该活动扩展了 GCMIntentService。我想使用调试器检查一些错误。我的问题是,有没有办法从推送通知启动时调试应用程序?

为了更清楚一点,我有一个BroadcastReceiver 和一个附加的服务。即使应用程序关闭,它也会接收广播并根据收到的消息启动活动。 应用程序可能在未打开时接收到广播。现在,当应用程序打开并且我收到推送消息时,我可以对其进行调试。但问题是当app关闭后接收到广播,那么如何调试呢?

【问题讨论】:

  • 是否有原因导致您无法在设置断点和后台的调试模式下启动您的应用程序?您不能像这样 afaik 那样按需连接调试器
  • 感谢您的评论@Neiti01。我没明白background it.. 是什么意思。我可以从 Eclipse 以调试模式启动我的应用程序并设置断点。问题是如果我从设备退出应用程序,那么调试就会停止(这是预期的)。现在我有一个 BroadCastReceiver 和一个附加的服务。即使应用程序关闭,它也会接收广播并启动活动。
  • 有可能是应用在未打开时收到了广播。现在,当应用程序打开并且我收到推送消息时,我可以对其进行调试。但问题是当应用程序关闭并收到广播时,如何调试它?我希望这个问题现在更清楚了。感谢您耐心阅读长评论。
  • “背景”是指只需按下主页按钮。这不应该停止它应该仍在运行的进程,并且应该仍然附加调试器,并且您的 BroadCastReceiver 中的断点将会触发。
  • 我在这里遇到了同样的问题。收到 GCM 后从通知中调用应用时,您是否找到了调试方法?

标签: java android eclipse google-cloud-messaging


【解决方案1】:
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
    /*
      the following line will halt the app here
      to give you time to attach the debugger
    */
    android.os.Debug.waitForDebugger();

    /*
      then you can put a breakpoint on any line
      after that, like here:
    */
    Log.d("onMessageReceived", "From: " + remoteMessage.getFrom());

    ...
}

您可以将android.os.Debug.waitForDebugger(); 行放在代码中要停止执行并附加调试器的任何位置。请记住在完成调试后将其删除。

【讨论】:

  • 2020 年 7 月仍能完美运行!为了安全起见,我建议始终将其包装在“if (BuildConfig.DEBUG)”中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多