2015-06-26 1 views
4

Можно ли убить ВСЕ активных задач/приложений в диспетчере задач с использованием АБР? Это было бы эквивалентно открытию task manager и убийству каждой задачи по одному ...Как убить все активные задачи/приложения с помощью АБР?

Я пробовал использовать команду adb shell, но это не убило всю задачу.

adb shell am kill-all 

Я не могу использовать команду adb shell am force-stop <PACKAGE>, потому что это потребовало бы мне знать, какой пакет/приложение работает. Я хочу убить ВСЕ выполняемые задачи пользовательских приложений. Аналогично использованию диспетчера задач и убийству каждой задачи по одному.

Согласно описанию команды, kill-all убивает все фоновые процессы. Являются ли фоновые процессы эквивалентными «сервисам» и задачам эквивалентной «деятельности»?

Кроме того, можно ли очистить кеш приложений, используя ADB, сохраняя данные пользователя? Кажется, что adb shell pm clear очищает все пользовательские данные. Я хочу только очистить кеш.

Причина, по которой я прошу, заключается в том, что я выполняю некоторые тесты производительности в нескольких пользовательских приложениях. Чтобы каждый тест был действительным, я хочу, чтобы ни одно из приложений пользователя не выполняло какие-либо задачи, действия, службы и кеширование в фоновом режиме.

+1

Возможный дубликат [этого] (http://stackoverflow.com/questions/3117095/stopping-an-android-app-from-console) полюсу. –

+0

Я не верю, что это дубликат. Другой вопрос SO заключается в закрытии и очистке одного приложения от устройства, в котором этот вопрос касается удаления всех незаменимых запущенных задач/приложений. –

ответ

5

Если вы хотите начать с чистым листом т.е. закрыть приложение и очистить его данные тоже можно сделать следующий

adb shell pm clear com.yourapp.package 
+0

я не видел сообщение @ Gustavo, но я думаю, его то же самое. –

+0

'adb shell pm clear' удаляет все пользовательские данные. Я хочу сохранить пользовательские данные, только очищая кэш пользовательского приложения. – Zythyr

+0

Для очистки кеша вам нужны привилегии root. Если у вас есть доступ к файловой системе и очистка папки кэша для вашего конкретного приложения –

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 «исключение»

0

Для не укоренены устройств я расширил Script Фейсала эмир в

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 не требует корневого разрешения. Обратите внимание, что приложения все еще отображаются в устройствах, на которых запущен ящик приложений, но я подтвердил, что процессы пакетов были очищены с помощью.

adb shell dumpsys meminfo relevant.package.names 
1

Вы можете использовать force-stop, он не требует корневого разрешения.

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); 
} 
+0

Лучшим способом является 'line.substring (line.lastIndexOf (": ") + 1, line.lastIndexOf ("/")); '. Вывод похож на «ProC# 0: fore T/A/T trm: 0 3184: com.android.settings/1000 (top-activity)' –

Смежные вопросы