如何停止在Eclipse下运行的程序?


107

我找不到停止正在运行的程序的选项(无论是在调试模式还是释放模式下)。

因此,现在,我仅通过关闭模拟器即可停止程序(将控制权返回给Eclipse)。

有更好的方法吗?这样我就不需要关闭(并重新启动)模拟器吗?

Answers:


112

我了解您想在模拟器上停止您的应用。为此,您可以打开设备窗口(在调试透视图中),选择进程,然后在同一窗口上按停止按钮。


1
非常感谢。你救了我的命。我将在7分钟内接受您的回答... :)
Android Eve

1
添加我刚刚发现的另一种方法:在模拟器中,选择设置>应用程序>管理应用程序>(选择应用程序)>强制停止。
Android前夕

嗯 那是另一种方式,但是到达那里要花时间,除非你在后台。:)
Varun

11
像Visual Studio中的“停止”按钮会很好。啊。
伊恩·戴维斯

在创建项目后立即启动应用程序,单击“停止”按钮并没有终止进程,而是RemoteException sending setActive(false) notificationlogCat视口中
Stphane,2014年

77

那些发现停止运行程序而在各个视图之间进行繁琐的切换的人(就像我一样),您可以通过选择当前视图中的设备窗口

Windows > 显示视图 > 其他... > Android > 设备


3
谢谢,这正是我想要的!+1
Sabobin

+1。太好了!如果我想让它再次运行,我只需从设备重新启动它,即可正常运行。
Francisco Corrales Morales 2014年

进一步,在列表中找到您的packageID。刚开始我对此感到不满意,但是后来我就像“哦,太酷了!我什么都看得到。” 很高兴看到Android的功能(请注意:我正在使用Genymotion模拟器,也许模拟器就是您所说的,我只是受不了等待它运行)
Stephen J

这违反了Android应用程序的生命周期,并可能导致异常退出,从而导致无法重新启动应用程序并迫使设备重新启动以解决问题。
Dominic Cerisano 2015年

13

请记住,在Android上,程序通常仅在您完成()时“停止”,否则在需要内存时系统会破坏它们。为什么要停下来?例如,您无需停止修复/重新安装/重新测试。


这是一个很好的见解。谢谢。+1
Android Eve

1
@夏娃..我的荣幸。有关血腥细节,请访问stackoverflow.com/questions/2033914/…–
DJC

4
也许会。但这并不能真正回答问题。就我而言,我正在玩AudioTrack类并生成声音流。一直听正弦波真的很烦人。我必须去DDMS,寻找合适的线程,选择它,然后找到STOP图标。很la脚
流浪

2
如何不停止就重置程序状态?
埃里克·恩海姆

我注意到,在模拟器上,它将在几分钟左右后再次运行您的程序(可能是因为它仍在运行)。当您需要进行小的编辑,然后在仿真器中快速进行检查时,它可以很方便地提前完成。通常,您要进行几次小的编辑,因此能够停止正在运行的应用程序并重新加载以进行快速检查可以节省大量时间。
Azurespot 2014年

12

在“调试”透视图中,选择“调试”下的应用程序根目录(活动线程列表在其中),然后单击停止按钮。


也谢谢你。只有阅读@varun的内容后,我才能理解您的说明。+1
Android前夕

@Android Eve,嗯,我很高兴它有所帮助。抱歉,还不够清楚!
克里斯·汤普森

没关系。尽管(也许是由于)在许多其他平台上进行了多年的开发,但我对Android开发还是完全迷失了方向。
Android前夕

是的,这是迄今为止最简单的解决方案。(实际上,应以概率来回答)。仅当突出显示线程而不是顶部的[Android Application]条目时,才禁用“停止”按钮。
科林

7

为我工作。

Windows->打开透视图->其他...-> DDMS

  1. 在Android视图的左侧窗口中,您可以看到“设备”。应该有一个正在运行的应用程序列表(仿真器或物理设备)。单击您要关闭的应用程序。通常,名称是软件包名称+应用程序名称
  2. 现在,单击“停止”符号。

要返回正常视图,您只需按右上方的Java按钮。您也可以按以下步骤进行操作:Windows->打开透视图->其他...-> Java


2

这个答案与Eclipse无关,但是由于这个问题出现在Google搜索中以停止正在运行的Android程序,因此我想提供一种命令行方法。运行adb shell,找到要杀死的进程的PID ps,例如我的是:

u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg

这样便kill 2097可以看到主屏幕再次出现。


应用生命周期违规。可能导致无法释放系统资源的问题,并迫使设备重新启动以清除故障。
多米尼克·塞里萨诺


0

Android僵尸 图1-在研究此答案期间,许多僵尸被杀

不建议在操作系统级别终止Android应用程序Java VM进程。不幸的是,这正是eclipse设备窗口“停止”的功能,就像System.exit()和shell“ kill”命令一样。

这将颠覆正常的应用程序生命周期方法,例如onStop(),onDestroy()和finalize()。

许多应用需要这些方法才能正常退出(例如,如果它们使用传感器,MediaPlayer,均衡器,可视化器等系统对象)。

如果在这些生命周期方法中未显式调用release(),则这些系统对象会死于系统资源的僵尸死亡之死。见图。1以上。这样可以防止应用重新启动,甚至需要重新启动。那是不愉快的方面。

唯一的解决方案是确保始终通过调用onStop()或onDestroy()或至少finalize()干净退出应用程序。调试器会执行此操作,关机时的操作系统也是如此。

您可以将应用程序设置为捕获SIG_HUP事件,以强制从命令行正常退出。

杀死应用VM的唯一时间是处于ANR(已经是僵尸)状态。ANR必须是固定的。切勿部署可以进入此状态的应用。这是非常不礼貌的。

您可以使用Google Analytics(分析)和Play商店监控部署中的这些内容。您不希望生气的用户由于您的僵尸应用程序而在重启后给出单星ANR评论。很坏。

请记住,Android是Linux:将其视为真实的OS,并尊重应用程序的生命周期,否则您肯定会面临可怕的Zombie Apocalypse。

PS:如果您不喜欢僵尸类比,幻想曲怎么样?

在此处输入图片说明


0

查看图片:1.单击DDMS;2.选择当前应用;3.点击“停止” 在此处输入图片说明


我这样做,应用程序停止调试。但有一种情况:1-从USB断开设备,运行应用程序,然后在应用程序出现错误时关闭它,然后在每次运行时调出调试表格,等待USB电缆连接或按后退按钮。2-设备连接到USB并运行应用程序(Ctrl + f11),然后在调试模式下自动运行应用程序。为了解决这个问题,我创建了一个新项目,并逐个复制/粘贴文件到新项目,但是同样的事情再次发生。现在有帮助吗?
艾哈迈德·埃布拉希米
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.