从控制台停止Android应用程序
是否有可能停止从控制台的Android应用程序? 就像是:
adb stop com.my.app.package
这会加快我们的testing过程。 现在,我们每次卸载/安装应用程序,以确保手动testing用例以干净的状态开始。
编辑:很长时间后,我写这篇文章,它被接受为答案, am force-stop
命令是由Android团队实现的,正如在这个答案中提到的。
另外:不要只是停止应用程序,因为你提到想为每个testing运行“干净的石板”,你可以使用adb shell pm clear com.my.app.package
,这将停止应用程序进程, 并清除所有存储该应用程序的数据。
如果你在Linux上:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
这只适用于运行shell时立即拥有root权限的设备/模拟器。 事先调用su
可能会略微提炼一下。
否则,你可以做(手动,或者我想脚本):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
停止应用程序的干净方式是:
adb shell am force-stop com.my.app.package
这样你就不必找出进程ID。
首先,将应用程序放入后台(按设备的主页button)
然后….在terminal….
adb shell am kill com.your.package
你可以在设备控制台中使用以下命令: pm disable com.my.app.package
,它会杀死它。 然后使用pm enable com.my.app.package
以便您可以再次启动它。
如果您有权访问应用程序包,则可以使用-r选项进行安装,如果当前正在运行的副作用将会终止该进程。 喜欢这个:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
-r选项保留当前与应用程序关联的数据。 但是,如果你想要像你提到的那样干净的石板,你可能不想使用这个选项。
如果您定位的是根目录设备,并且/或者您的APK中有服务,而您不想停止,则其他解决scheme将无法工作。
为了解决这个问题,我使用了一个广播消息接收器,我已经添加到我的活动中来阻止它。
public class TestActivity extends Activity { private static final String STOP_COMMAND = "com.example.TestActivity.STOP"; private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { TestActivity.this.finish(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //other stuff... registerReceiver(broadcastReceiver, new IntentFilter(STOP_COMMAND)); } }
这样,你可以发出这个adb命令来停止你的活动:
adb shell am broadcast -a com.example.TestActivity.STOP
如果你正在寻找的是杀死一个包
pkill package_name
应该工作
在eclipse中,转到DDMS的angular度,在设备选项卡中点击你想杀死它的设备下你想杀死的进程。 你只需要按停止button,它应该杀死进程。
我不知道如何从命令行工具做到这一点,但必须有一种方法。 也许你是通过adb shell来做的…
pkill NAMEofAPP
非根植棉花糖,termux和terminal仿真器。