Answers:
我了解您想在模拟器上停止您的应用。为此,您可以打开设备窗口(在调试透视图中),选择进程,然后在同一窗口上按停止按钮。
RemoteException sending setActive(false) notification
在logCat视口中
那些发现停止运行程序而在各个视图之间进行繁琐的切换的人(就像我一样),您可以通过选择当前视图中的设备窗口
Windows > 显示视图 > 其他... > Android > 设备
请记住,在Android上,程序通常仅在您完成()时“停止”,否则在需要内存时系统会破坏它们。为什么要停下来?例如,您无需停止修复/重新安装/重新测试。
这个答案与Eclipse无关,但是由于这个问题出现在Google搜索中以停止正在运行的Android程序,因此我想提供一种命令行方法。运行adb shell
,找到要杀死的进程的PID ps
,例如我的是:
u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg
这样便kill 2097
可以看到主屏幕再次出现。
图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:如果您不喜欢僵尸类比,幻想曲怎么样?
查看图片:1.单击DDMS;2.选择当前应用;3.点击“停止”