9

我一直在为 Android 开发一个包含后台服务的 PhoneGap 应用程序。我的问题是:如何调试此服务?是否可以使用 AVD 进行调试并逐步进行?或者我可以使用自己的设备来实现吗?

谢谢!

4

5 回答 5

9

是的,可以使用 AVD 或设备来完成。查看http://www.helloandroid.com/tutorials/how-debug-service调试服务

于 2013-08-01T23:50:11.240 回答
3

您可以通过放置一条语句来调试您的服务,我在这里提到它:

    @Override
public void onCreate() {
super.onCreate();
//whatever else you have to to here...
android.os.Debug.waitForDebugger();  // this line is key
}
于 2014-06-14T06:04:59.877 回答
1

您可以在服务内部使用常用日志(用于不深入调试),然后在应用程序处于后台或关闭时使用监控工具查看这些日志。

打开监控工具:

  1. 打开 SDK(你的 SDK 文件夹)>tools>lib>monitor-x86_64
  2. 打开您的监控工具并选择一个设备,您可以像在通常的调试器中一样查看日志记录并按标签搜索。
于 2018-10-23T10:55:29.570 回答
0

具体到 intellij Idea,虽然 eclipse 也可能有等效的解决方案,但我在 Shishupal 的回答中添加了一些对我有用的点,我们需要添加android.os.Debug.waitForDebugger();服务代码。

但除此之外,我们需要取消选中“部署应用程序”并选择“不启动活动”。

在 12.1.4 版本中,它看起来像这样:

截屏

于 2014-08-12T09:12:35.610 回答
0

查找后台服务的启动位置,例如

public BGcheckService() {
    Log.d("BGcheckService: ", "starting service");
}

然后插入一行:

public BGcheckService() {
    android.os.Debug.waitForDebugger();
    Log.d("BGcheckService: ", "starting service");
}

除此之外,如果您的后台服务在一个单独的进程中,那么当您按下debug按钮开始调试您的后台服务时,您还需要等待后台服务启动,然后按下按钮附加到进程(见截图Android Studio 3.6.1 .. 它是按钮右侧的第三个debug按钮)。您将可以选择附加到的进程,其中一个是后台服务的单独进程。

这是按钮,背景突出显示

当您将鼠标悬停在按钮上时

注意:

  1. 如果没有该行android.os.Debug.waitForDebugger();,后台服务将直接启动而无需等待调试器附加。
  2. 即使使用该行android.os.Debug.waitForDebugger();,您仍然需要将调试器附加到后台服务的进程。
  3. 按下按钮附加到进程的时间,需要在后台服务启动后(在等待时android.os.Debug.waitForDebugger();),否则进程将不存在,您将无法选择它。
于 2020-05-29T05:51:50.460 回答