如何停止在 Eclipse 下运行的程序?
Posted
技术标签:
【中文标题】如何停止在 Eclipse 下运行的程序?【英文标题】:How to stop a program running under Eclipse? 【发布时间】:2011-06-25 18:06:13 【问题描述】:我找不到停止正在运行的程序的选项(无论是在调试模式还是发布模式下)。
所以现在,我只需关闭模拟器即可停止程序(将控制权返回给 Eclipse)。
有没有更好的方法来做到这一点?这样我就不需要关闭(并重新启动)模拟器?
【问题讨论】:
【参考方案1】:我了解到您想在模拟器上停止您的应用。为此,您可以打开设备窗口(在调试透视图中),选择进程,然后按同一窗口上的停止按钮。
【讨论】:
非常感谢。你救了我的命。我会在 7 分钟内接受你的回答... :) 添加我刚刚发现的另一种方式:在模拟器中选择设置>应用程序>管理应用程序>(选择应用程序)>强制停止。 是的。这是另一种方式,但需要时间才能到达那里,除非你在后台有它。 :) 像 Visual Studio 中的停止按钮会非常好。呃。 刚在项目创建后启动应用程序,当点击停止按钮时,它并没有终止进程,而是在 logCat 视口中触发了RemoteException sending setActive(false) notification
【参考方案2】:
那些觉得在视角之间切换以停止程序很乏味的人(就像我一样),您可以通过选择以当前视角查看设备窗口
Windows > 显示视图 > 其他... > android > 设备
【讨论】:
谢谢,这正是我想要的! +1 +1。太好了!如果我想让它再次运行它,我只需从设备再次启动它,它就可以完美运行。 再上一步,在列表中找到您的 packageID。起初我对此感到厌烦,但后来我就像“哦,酷!我可以看到一切。”很高兴看到 Android 在它的引擎盖下有什么(注意:我正在使用 Genymotion 模拟器,也许模拟器就是你所说的,我就是等不及它运行) 这违反了 Android 应用生命周期,并可能导致不正常的退出,从而导致无法重新启动应用并强制设备重新启动以解决问题。【参考方案3】:请记住,在 Android 上,程序通常只有在您完成()时才会“停止”,否则系统会在需要内存时销毁它们。为什么要停下来?例如,您无需停下来修复/重新安装/重新测试。
【讨论】:
这是一个很好的见解。谢谢你。 +1 @Eve .. 很高兴。有关血腥细节,请查看***.com/questions/2033914/… 好吧,也许吧。但这并不能真正回答问题。就我而言,我正在使用 AudioTrack 类并生成声音流。一直听那个正弦波真的很烦人。我必须去 DDMS,找到正确的线程,选择它,然后找到 STOP 图标。很蹩脚。 如何在不停止的情况下重置程序的状态? 我注意到模拟器,它不会再次运行你的程序,直到几分钟左右(可能是因为它仍在运行)。当您需要进行小编辑时,提前完成会很方便,然后在模拟器中快速检查它。通常,您会进行一些小的编辑,因此能够停止正在运行的应用程序并重新加载它以快速检查可以节省大量时间。【参考方案4】:在“调试”透视图中,选择“调试”下的应用程序根目录(活动线程列表所在的位置),然后单击停止按钮。
【讨论】:
也谢谢你。我只有在阅读@varun 之后才理解您的指示。 +1 @Android Eve,啊,我很高兴它有帮助。抱歉,不够清楚! 没关系。尽管(也许是因为)在许多其他平台上进行了多年开发,但我对 Android 开发完全迷失了方向。 是的,这是迄今为止最简单的解决方案。 (事实上,应该是公认的答案)。仅当突出显示线程而不是顶部 [Android 应用程序] 条目时,停止按钮才被禁用。【参考方案5】:为我工作。
Windows -> 打开透视图 -> 其他... -> DDMS
-
在 Android 视图中,在左侧窗口中,您可以看到“设备”。应该有一个正在运行的应用程序列表(模拟器或物理设备)。
单击要关闭的应用程序。通常名称是包名+应用程序名
现在点击“停止”符号。
要返回正常视图,您只需按下右上角的 Java 按钮即可。 你也可以按下: Windows -> 打开透视图 -> 其他... -> Java
【讨论】:
【参考方案6】:这个答案不涉及 Eclipse,但由于这个问题出现在谷歌搜索停止正在运行的 Android 程序中,我想提供一个命令行方法。运行adb shell
,找到你想用ps
杀死的进程的PID,例如我的是:
u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg
那么只需kill 2097
,您应该会再次看到主屏幕。
【讨论】:
应用生命周期违规。可能会导致系统资源未释放并强制设备重启以清除问题。【参考方案7】:在要停止的代码中添加断点,然后按 F11 在调试模式下运行它。
【讨论】:
【参考方案8】:图 1 - 在研究此答案时杀死了许多僵尸
不建议在操作系统级别杀死 Android 应用 Java VM 进程。不幸的是,这正是 eclipse 设备窗口“停止”所做的事情,System.exit() 和 shell “kill”命令也是如此。
这颠覆了onStop()、onDestroy()、finalize()等正常的app生命周期方法。
许多应用程序需要这些方法才能正常退出(例如,如果它们使用 Sensor、MediaPlayer、Equalizer、Visualizer 等系统对象)。
如果在这些生命周期方法中没有显式调用 release(),这些系统对象会随着系统资源的僵尸死亡而徘徊。见图。 1 以上。这可以防止应用程序重新启动,甚至需要重新启动。这是不优雅的一面。
唯一的解决方案是确保您始终通过调用 onStop() 或 onDestroy() 或至少 finalize() 干净地退出应用程序。调试器会这样做,关闭时的操作系统也会这样做。
您可以将您的应用设置为捕获 SIG_HUP 事件,以强制从命令行正常退出。
您会杀死应用虚拟机的唯一时间是处于 ANR(已经是僵尸)状态。必须修复 ANR。切勿部署可以进入此状态的应用程序。这是非常粗鲁的。
您可以使用 Google 分析和 Play 商店来监控部署中的这些。您不希望由于您的僵尸应用程序而不得不重新启动后愤怒的用户给出单星 ANR 评论。非常糟糕。
请记住,Android 就是 Linux:将其视为真正的操作系统,并尊重应用程序的生命周期,否则您肯定会面临可怕的僵尸启示录。
PS:如果你不喜欢僵尸的比喻,那幻想曲呢?
【讨论】:
【参考方案9】:看图: 1.点击DDMS; 2.选择当前应用; 3.点击“停止”
【讨论】:
我这样做了,应用程序停止调试。但有一种情况: 1-从 USB 断开设备,运行应用程序,然后当应用程序面临错误时关闭,然后在每次运行时调出调试表格并等待 USB 电缆连接或按下后退按钮。 2-设备连接到USB并运行应用程序(Ctrl + f11)然后,应用程序自动在调试模式下运行。为了解决这个问题,我创建了一个新项目,并将文件一个一个复制/粘贴到新项目,但同样的事情再次发生。现在有什么帮助吗?以上是关于如何停止在 Eclipse 下运行的程序?的主要内容,如果未能解决你的问题,请参考以下文章