Answers:
编辑:龙后,我写了这篇文章,它被接纳为答案,am force-stop
命令执行由Android团队,在提到这个答案。
或者:由于提到每次运行都需要一个“干净的表盘”,而不是仅停止应用程序,您可以使用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。
force-stop
命令存在之前就在上面写下了答案。我更新了答案以指出这一点。
Android 9.0 API Level 28
,即使找到与应用有关的应用,该应用仍会显示在“ 最近使用PID
的应用”中。您是否知道如何完全停止应用程序运行,这甚至意味着从后台应用程序停止运行?
首先,将应用置于后台(按设备的主屏幕按钮)
然后...在航站楼...
adb shell am kill com.your.package
您可以从设备控制台使用以下命令:pm disable com.my.app.package
它将杀死它。然后使用,pm enable com.my.app.package
以便您可以再次启动它。
adb shell
运行,然后再运行su
。
如果您定位到非root用户的设备和/或APK中也不想停止的服务,则其他解决方案将不起作用。
为了解决此问题,我求助于我添加到活动中的广播消息接收器以停止该活动。
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
adb shell killall -9 com.your.package.name
根据MAC“强制访问控制”,您可能具有杀死不是由root用户启动的进程的权限
玩得开心!
pkill NAMEofAPP
无根棉花糖,termux和终端模拟器。