我一直在为 Android 开发一个包含后台服务的 PhoneGap 应用程序。我的问题是:如何调试此服务?是否可以使用 AVD 进行调试并逐步进行?或者我可以使用自己的设备来实现吗?
谢谢!
我一直在为 Android 开发一个包含后台服务的 PhoneGap 应用程序。我的问题是:如何调试此服务?是否可以使用 AVD 进行调试并逐步进行?或者我可以使用自己的设备来实现吗?
谢谢!
是的,可以使用 AVD 或设备来完成。查看http://www.helloandroid.com/tutorials/how-debug-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();
),否则进程将不存在,您将无法选择它。