ADBを使用してタスクマネージャーでアクティブなタスク/アプリを強制終了[〜#〜] all [〜#〜]できますか?これは タスクマネージャ を開き、各タスクを1つずつ強制終了するのと同じです...
次の adb Shell コマンドを使用してみましたが、すべてのタスクが強制終了されませんでした。
adb Shell am kill-all
adb Shell am force-stop <PACKAGE>
コマンドは使用できません。実行中のパッケージ/アプリを知る必要があるためです。実行中のすべてのユーザーアプリタスクを強制終了したい。同様に、タスクマネージャを使用して、各タスクを1つずつ強制終了します。
コマンドの説明によると、kill-allはすべてのバックグラウンドプロセスを強制終了します。バックグラウンドプロセスは「サービス」に相当し、タスクは「アクティビティ」に相当しますか?
また、ユーザーデータを保持しながら、ADBを使用してアプリのキャッシュをクリアすることは可能ですか? adb Shell pm clear
はすべてのユーザーデータを消去するようです。キャッシュのみをクリアしたい。
私が尋ねる理由は、いくつかのユーザーアプリでパフォーマンステストを行っているためです。各テストを有効にするために、ユーザーアプリのいずれにもタスク、アクティビティ、サービス、キャッシュがバックグラウンドにないことを確認します。
白紙の状態を開始する場合、つまりアプリを閉じてデータを消去する場合は、次の操作を実行できます
adb Shell pm clear com.yourapp.package
force-stop
を使用できます。ルート権限は必要ありません。
adb Shell am force-stop <PACKAGE>
そして、あなたはトップランニングアクティビティ/アプリからパッケージ名を取得できます
adb Shell "dumpsys activity | grep top-activity"
その後、結果を少し再生して、パッケージを抽出する必要があります。ここで、my 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);
}
ルート権限を取得されていないデバイスについては、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
実行中のアプリを見つけ、システムアプリなどを無視してkillすると、次のコマンドですべてが実行されます。
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 "例外"