如何调试Android后台服务?

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

9

嘿,安卓开发者,非常感谢你! - pointnetdeveloper
让它变成两百万! - Aleks

3
您可以通过添加一条单独的语句来调试您的服务,我在这里提到它:
    @Override
public void onCreate() {
super.onCreate();
//whatever else you have to to here...
android.os.Debug.waitForDebugger();  // this line is key
}

1
您可以在服务内使用常规日志(非深度调试),然后在应用程序处于后台或关闭时使用监视器工具查看这些日志。
要打开监视器工具:
1. 打开SDK(您的SDK文件夹)>工具>lib>monitor-x86_64 2. 打开您的监视器工具,选择设备,您可以像在常规调试器中一样查看日志并按标记搜索。

0

针对Intellij Idea,虽然Eclipse也可能有等效的解决方案, 我在Shishupal的答案基础上添加了一些要点,我们需要在服务代码中添加android.os.Debug.waitForDebugger();

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

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

Screenshot


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

注意:

  1. 没有 android.os.Debug.waitForDebugger(); 这行代码,后台服务会直接启动而不等待调试器连接。
  2. 即使有 android.os.Debug.waitForDebugger(); 这行代码,你仍然需要将调试器附加到后台服务的进程上。
  3. 在按下附加到进程的按钮时,需要在后台服务已经启动(在 android.os.Debug.waitForDebugger(); 处等待)之后进行,否则进程将不存在,你将无法选择它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接