我一直在为Android开发一个包含后台服务的PhoneGap应用程序。我的问题是:我该如何调试这项服务?是否可以使用AVD进行调试并逐步进行?或者我可以使用自己的设备来实现这一目标吗?
谢谢!
答案 0 :(得分:8)
是的,可以使用AVD或设备完成。查看http://www.helloandroid.com/tutorials/how-debug-service和Debugging 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)
您可以在服务内部使用常规日志(而不是进行深度调试),然后在应用程序处于后台或关闭状态时使用监视工具查看这些日志。
要打开监视工具:
答案 3 :(得分:0)
具体到intellij Idea,虽然也可能有一个等效的eclipse解决方案,
我在Shishupal的回答中添加了几点,这对我有用,我们需要在服务代码中添加android.os.Debug.waitForDebugger();
。
但除此之外,我们还需要取消选中“部署应用程序” 并选择“不要启动活动”。
在版本12.1.4中,它看起来像这样:
答案 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
按钮右侧的第三个按钮)。您可以选择要附加的流程,其中之一是后台服务的独立流程。
NB:
android.os.Debug.waitForDebugger();
行,后台服务将仅启动而无需等待调试器附加。android.os.Debug.waitForDebugger();
行,您仍然需要将调试器附加到后台服务的进程中。android.os.Debug.waitForDebugger();
时),否则该进程将不存在,您将不会能够选择它。