即使在调用finish()之后,我的Android应用程序也被标记为“已经在运行”...为什么?

时间:2013-07-13 23:32:22

标签: android eclipse debugging android-emulator

在Eclipse中,我加载了一个Android虚拟设备,然后一旦加载而不是锁定屏幕,我就点击了Eclipse工具栏上的“Debug”。我的应用运行正常(除了上一个编辑周期的任何错误,但这是调试的用途)。但是,在我尝试结束我的应用程序之后(通过点击主[仅]活动的后退按钮 - 我已经实现了对finish()的调用作为onBackPressed()的最后一行,即使在进一步的研究中看起来是打击主活动的后退按钮隐式调用finish()),它似乎不会结束应用程序。

Eclipse调试透视图的“调试”窗格仍显示以下内容:

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来自哪里。

此外,当我再次调试时,认为应用程序已完全关闭,调试图标上的工具提示是“Debug MyAppName(已经运行)”。

当涉及Eclipse的调试钩子时,finish()不会终止应用程序吗?或者,我是否应该从主要活动中调用一些其他方法,其行为类似于“终止()”,告诉Android不仅活动,而且整个应用程序已完成?

是的,我知道Android应用程序的进程在正常生命周期中运行时不会立即被杀死。我意识到我不希望让我的应用程序在发货版本中杀死它的过程冷死。但是,如果这是持久性调试器绑定的原因,我至少希望实现类似if(DEBUG_MODE) trulyExit();之类的东西,或者通过在完成()之后以某种方式教导Eclipse自动操作,或者通过实现某种类型的trueExit ()在我的主要活动中,仅在调试期间使用。所以,如果我能得到一些关于如何教Eclipse的技巧,或者如何实现trulyExit(),那就太棒了。

我的解决方法目前每次都关闭模拟器。但是,我想不出那就是你应该如何结束调试会话......

相关开发环境信息:

  • (操作系统:Windows 7专业版)
  • IDE:Android开发者工具版本v22.0.1-685705
    • 除了Google的ADT下载提供的内容之外,ADT Eclipse没有添加/插件。
  • 测试平台:仿真器,而不是设备
    • (我的物理设备上的USB端口位于fritz上,我不确定调试绑定是否仍然会出现错误。)

0 个答案:

没有答案