我一直在开发一个包含后台服务的PhoneGap Android应用程序。我的问题是:如何调试此服务?是否可以使用AVD逐步调试?或者我可以使用自己的设备来实现调试?
谢谢!
谢谢!
是的,可以使用AVD或设备进行调试。请查看http://www.helloandroid.com/tutorials/how-debug-service和Debugging a service。
@Override
public void onCreate() {
super.onCreate();
//whatever else you have to to here...
android.os.Debug.waitForDebugger(); // this line is key
}
针对Intellij Idea,虽然Eclipse也可能有等效的解决方案,
我在Shishupal的答案基础上添加了一些要点,我们需要在服务代码中添加android.os.Debug.waitForDebugger();
。
但除此之外,我们还需要取消勾选“部署应用程序”并选择“不启动活动”。
在12.1.4版本中,它看起来像这样:
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
按钮向右数第三个按钮)。您将被要求选择要附加的进程,其中之一将是后台服务的单独进程。
注意:
android.os.Debug.waitForDebugger();
这行代码,后台服务会直接启动而不等待调试器连接。android.os.Debug.waitForDebugger();
这行代码,你仍然需要将调试器附加到后台服务的进程上。android.os.Debug.waitForDebugger();
处等待)之后进行,否则进程将不存在,你将无法选择它。