【问题标题】:A proper way to Debug a Service in Android Studio?在 Android Studio 中调试服务的正确方法?
【发布时间】:2013-09-20 01:27:06
【问题描述】:

在 Android Studio 中是否有合适的方法来调试服务?还是 Android Studio 无法做到这一点?当我尝试调试时,它只会断开套接字。 ("与Target VM断开连接,地址:'localhost:8600',传输'socket')

希望你能在这里帮助我..

我通过这里的一些链接作为建议做了什么,我已经放置了 .waitForDebugger 但没有任何反应。请帮助我.. 非常感谢。

   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent mainService = new Intent(this,MainPowerAndVolumeService.class);

    startService(mainService);
    android.os.Debug.waitForDebugger();

    finish();

}

【问题讨论】:

  • 这里有类似的问题。它会在大约 30 秒的空闲时间后断开连接。我正在调试一个服务。

标签: android service android-studio


【解决方案1】:

“在调试中运行”旁边有一个按钮(在 1.1.0 版本中看起来像这样:),用于将调试器附加到正在运行的 android 进程。这是官方信息(对于 IntelliJ,但在 Android Studio 中是一样的): http://blog.jetbrains.com/idea/2011/05/new-in-105-attach-debugger-to-a-running-android-process/

【讨论】:

  • 感谢您提供的信息。我先测试一下是否突然断线。
  • 这很好,但你如何让它首先运行呢?每次更改代码中的字节时,使用 adb shell 手动安装和启动服务是一件很麻烦的事。
【解决方案2】:

(2020年8月更新:Android Studio 4.0中的按钮图标相同)

所以它正在等待调试器附加,一旦服务启动,但你仍然需要告诉 Android Studio 附加到进程(它不会自动发生)。

按下按钮以附加到进程(参见 Android Studio 3.6 的屏幕截图 .. 它是 debug 按钮右侧的第三个按钮)。您可以选择附加到的进程,其中一个是后台服务的单独进程。

点击按钮附加到进程的时间,需要在后台服务启动后(在android.os.Debug.waitForDebugger();等待时),否则进程将不存在,你将无法选择它。

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多