Y.S*_*Y.S 5 android android-service android-testing android-debug android-developer-api
有什么意义
android.os.Debug.waitForDebugger();
Run Code Online (Sandbox Code Playgroud)
我知道我们 [有时] 需要使用此函数来调试 a Service,但我的问题是:
Service必须以这种方式调试,而不是 an Activityor BroadcastReceiver?有人会认为在项目中调试任何类型的代码都很简单。除了它不是。Service反正不是为了。
这个特殊程序存在的原因是什么?它还有什么用途?
等待调试器连接。一旦调试器附加,它就会返回,所以如果你想立即开始跟踪,你需要在 waitForDebugger() 调用之后放置一个断点。
该为什么仍然没有答案。
更新:
我发现了此功能的一个用例:当应用程序进程终止后自动重启 Android 应用程序时。当用户在应用程序设置中切换运行时权限时,该进程将被终止。更一般地说,一个应用程序进程被杀死并重新启动,只要...
android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)
叫做。
要在进程重新启动后调试应用程序,请编写android.os.Debug.waitForDebugger()代码,然后将调试器附加到当前进程。
这是此功能的一个用例。
参考资料:
调试服务。
可能相关:
我不确定我的答案是否正确,因为你可能会期待里面有复杂的见解。实际上,有一个非常简单的过程来连接和拦截过程响应。
如您所见,回答这个问题非常简单。由于进程拦截期间的竞争条件,您将无法在早期断点处停止,并且应该调用waitForDebugger(). 在最常见的地方,例如Service调试和Application.
这是另一个问题,我不确定这里的上下文,但是。我们需要调用该方法,并在使用清单中的Service另一个进程的情况下手动附加到进程。显然,调试桥将在应用程序的当前活动进程上设置,但由于我们可以Service从另一个进程运行,因此我们需要手动将其添加到调试桥并等待调试连接。
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |