如何调试Android后台服务?

时间:2013-08-01 21:15:42

标签: java android eclipse cordova background-service

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

谢谢!

5 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

您可以通过单个语句来调试您的服务,我在这里提到它:

    @Override
public void onCreate() {
super.onCreate();
//whatever else you have to to here...
android.os.Debug.waitForDebugger();  // this line is key
}

答案 2 :(得分:1)

您可以在服务内部使用常规日志(而不是进行深度调试),然后在应用程序处于后台或关闭状态时使用监视工具查看这些日志。

要打开监视工具:

  1. 打开SDK(您的SDK文件夹)>工具> lib> monitor-x86_64
  2. 打开监视工具并选择设备,您可以像在通常的调试器中一样查看日志记录并按标签搜索。

答案 3 :(得分:0)

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

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

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

Screenshot

答案 4 :(得分: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按钮右侧的第三个按钮)。您可以选择要附加的流程,其中之一是后台服务的独立流程。

this is the button, with background highlight

when you hover over the button

NB:

  1. 没有android.os.Debug.waitForDebugger();行,后台服务将仅启动而无需等待调试器附加。
  2. 即使使用android.os.Debug.waitForDebugger();行,您仍然需要将调试器附加到后台服务的进程中。
  3. 按下按钮以附加到进程的时间必须在后台服务启动之后(等待android.os.Debug.waitForDebugger();时),否则该进程将不存在,您将不会能够选择它。