在 Eclipse 中,我加载了一个 Android 虚拟设备,然后一旦加载,而不是在锁定屏幕上,我点击 Eclipse 工具栏上的“调试”。我的应用程序运行良好(除非上次编辑周期出现任何错误,但这就是调试的目的)。但是,在我尝试结束我的应用程序之后(通过从主 [only] 活动中点击后退按钮 - 我已经实现了对 finish() 的调用作为 onBackPressed() 的最后一行,即使在进一步研究中似乎击中主活动的后退按钮隐式调用完成()),它似乎没有结束应用程序。
Eclipse 调试透视图的 Debug 窗格仍然显示以下内容:
MyAppName [Android application]
DalvikVM[localhost:8619]
Thread [<1> main] (Running)
Thread [<10> Binder_2] (Running)
Thread [<9> Binder_1] (Running)
我假设 DalvikVM 线是模拟器。我不会故意在我的应用程序中启动任何额外的线程(到目前为止,计算足够轻,我只是在 UI 线程中通过按钮单击等来完成它们),所以我不知道 Binder_1 和 Binder_2 来自哪里。
此外,当我再次进行调试时,认为应用程序已完全关闭,调试图标上的工具提示是“调试 MyAppName(已运行)”。
当涉及到 Eclipse 的调试挂钩时,finish() 是否不会终止应用程序?或者,我应该从行为类似于“terminate()”的主要活动中调用其他方法,它告诉 Android 不仅活动完成,而且整个应用程序都完成了?
是的,我知道 Android 应用程序的进程在正常生命周期期间在设备上运行时不会立即终止。我意识到我不想让我的应用程序在发布版本时杀死它的进程。if(DEBUG_MODE) trulyExit();
但是,如果这是持久调试器绑定的原因,我至少想实现类似活动,仅在调试期间使用。所以,如果我能得到一些关于如何教授 Eclipse 或如何实现 Eclipse 的技巧,那就trulyExit()
太棒了。
我目前的解决方法是每次都关闭模拟器。但是,我不认为这就是你应该结束调试会话的方式......
相关开发环境信息:
- (操作系统:Windows 7 专业版)
- IDE:Android 开发者工具 build v22.0.1-685705
- ADT Eclipse 没有添加/插件,除了 Google 的 ADT 下载提供的内容。
- 测试平台:模拟器,不是设备
- (我的物理设备上的 USB 端口出现故障,我不确定调试插件是否仍会在其上出现异常。)