18

由于手机重新启动并因此在启动时与 Eclipse 调试器/LogCat 断开连接,我如何查看启动完成广播接收器在哪里崩溃?

我在我的公共类 BootCompleteReceiver 的 onReceive() 中执行一些操作 extends BroadcastReceiver { ... }

当手机启动时,这会崩溃并弹出强制关闭对话框。我该如何调试它并查看问题出在哪里?

这个问题适用于调试任何BOOT_COMPLETE广播接收器。

谢谢!

编辑

是的,当手机启动时,我们可以在 LogCat 中看到系统日志,但我的应用程序 Log.d(TAG,"Boot completed") 必须等到它 (onReceive) 被触发,但到那时应用程序由于问题而崩溃位于接收器本身的某个位置。在我可以记录任何内容之前,该应用程序崩溃了。另外,我不能对正在重启的手机使用“在调试模式下运行”...

4

4 回答 4

79

正如我在另一个线程上写的:

您可以通过 adb 连接到设备并打开设备外壳来模拟所有广播操作。

开始了:

  • 打开控制台/终端并导航到 /platform-tools
  • 输入“adb shell”或在 linux/mac 上输入“./adb shell”
  • 在 shell 中键入“am broadcast -a android.intent.action.BOOT_COMPLETED”或您想要触发的任何操作。

这样你应该可以调试了。

adb 或 adb shell 附带了许多不错的命令。就试一试吧

问候弗洛

编辑: 使用上述方法也将重新启动设备。为防止设备重新启动,请使用am broadcast -a android.intent.action.BOOT_COMPLETED com.example.app. 请注意广播所在的应用程序包名称的后缀。这使您可以仅将 BOOT_COMPLETED 意图发送到您的应用程序以进行调试。——罗尔·范乌登

于 2012-04-11T11:39:33.007 回答
2

接收器仅控制您的代码何时运行(即手机启动时)。在调试时,手动运行代码。您可以通过这种方式解决 99% 的问题,其余问题(如果有)可以通过写入 LogCat 来解决,因此请查看您的代码在做什么。

于 2012-04-10T10:30:08.233 回答
1

检查您收到的 Intent 操作和捆绑包,它们可能为空,并且可能是空指针异常。

于 2012-04-10T10:44:09.387 回答
1

只需在 Android Studio 中放入您的终端即可

adb shell am broadcast -a android.intent.action.BOOT_COMPLETE

于 2017-04-19T10:06:30.667 回答