如何使用ADB终止所有活动任务/应用程序?

时间:2015-06-26 18:28:57

标签: android shell android-activity adb

是否可以使用ADB终止任务管理器中的 ALL 活动任务/应用?这相当于打开task manager并逐个杀死每个任务......

我尝试使用以下adb shell命令,但这并没有杀死所有任务。

adb shell am kill-all

我无法使用adb shell am force-stop <PACKAGE>命令,因为它需要我知道正在运行的软件包/应用程序。我想杀死所有正在运行的用户应用程序任务。与使用任务管理器并逐个查杀每个任务类似。

根据命令说明, kill-all 会终止所有后台进程。后台流程是否等同于“服务”,任务是否等同于“活动”?

此外,是否可以在保留用户数据的同时使用ADB清除应用程序缓存?我似乎adb shell pm clear清除了所有用户数据。我只想清除缓存。

我之所以要问是因为我正在对几个用户应用程序进行一些性能测试。为了使每个测试有效,我想确保所有用户应用程序都没有任何任务,活动,服务和缓存已经在后台。

4 个答案:

答案 0 :(得分:7)

如果你想开始清理平板,即关闭应用程序并清除其数据,你可以执行以下操作

adb shell pm clear com.yourapp.package

答案 1 :(得分:4)

您可以使用force-stop,它不需要root权限。

adb shell am force-stop <PACKAGE>

您可以从顶级运行的活动/应用

获取包名称
adb shell "dumpsys activity | grep top-activity"

之后你需要玩一下结果,提取包,这里是我的java代码:

public void parseResult(String line){
        int i = line.indexOf(" 0 ");
        if(i == -1){
            return;
        }
        line = line.substring(i);
        i = line.indexOf(":");
        if(i == -1){
            return;
        }
        line = line.substring(i + 1);
        i = line.indexOf("/");
        return line.substring(0, i);
}

答案 2 :(得分:1)

找到正在运行的应用程序,忽略系统应用程序等并杀死,以下命令可以完成所有操作;

adb shell ps|grep -v root|grep -v system|grep -v NAME|grep -v shell|grep -v smartcard|grep -v androidshmservice|grep -v bluetooth|grep -v radio|grep -v nfc|grep -v "com.android."|grep -v "android.process."|grep -v "com.google.android."|grep -v "com.sec.android."|grep -v "com.google.process."|grep -v "com.samsung.android."|grep -v "com.smlds" |awk '{print $2}'| xargs adb shell kill

如果您发现任何类似情况,可以添加更多例外情况; grep -v“exception”

答案 3 :(得分:1)

对于非根设备,我扩展了Faisal Ameer的脚本

adb shell ps | grep -v root | grep -v system | grep -v "android.process." | grep -v radio | grep -v "com.google.process." | grep -v "com.lge." | grep -v shell | grep -v NAME | awk '{print $NF}' | tr '\r' ' ' | xargs adb shell am force-stop

adb shell am force-stop不需要root权限。请注意,应用程序仍显示在运行应用程序抽屉的设备中,但我已验证已使用清除程序包进程。

adb shell dumpsys meminfo relevant.package.names