是否可以使用ADB终止任务管理器中的 ALL 活动任务/应用?这相当于打开task manager并逐个杀死每个任务......
我尝试使用以下adb shell命令,但这并没有杀死所有任务。
adb shell am kill-all
我无法使用adb shell am force-stop <PACKAGE>
命令,因为它需要我知道正在运行的软件包/应用程序。我想杀死所有正在运行的用户应用程序任务。与使用任务管理器并逐个查杀每个任务类似。
根据命令说明, kill-all 会终止所有后台进程。后台流程是否等同于“服务”,任务是否等同于“活动”?
此外,是否可以在保留用户数据的同时使用ADB清除应用程序缓存?我似乎adb shell pm clear
清除了所有用户数据。我只想清除缓存。
我之所以要问是因为我正在对几个用户应用程序进行一些性能测试。为了使每个测试有效,我想确保所有用户应用程序都没有任何任务,活动,服务和缓存已经在后台。
答案 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