Intereting Posts
Невозможно разобрать шаблон «Класс» Ошибка всякий раз, когда я пытаюсь открыть новый класс java Android Gallery View Прокрутка проблемы, когда onClickListener для данных Как заменить / изменить кнопку изображения программно андроид Выполнение вызова с использованием указанной SIM-карты в устройстве с двумя SIM-картами Несколько страниц одновременно на ViewPager API Java REST для Android Доступ к Unity StreamingAssets на Android Как обращаться с намерением, у которого нет данных при первом вызове какого-либо действия? Как я могу программно создать резервный файл sqlite на SD-карте? Ожидание до завершения асинхронной задачи Как захватить длинное событие пресса для элемента Listeview ListActivity? OnClickListener не работает во фрагменте Привязка данных Android к условным ресурсам Обновление базы данных SQLite из одной версии в другую? Android: Просмотр горизонтального списка в вертикальном представлении прокрутки?

Список всех запущенных процессов в Android

Как получить список всех запущенных процессов системы Android, включая процессы, запускаемые системой?

Я попытался получить список, используя следующий код:

ActivityManager activityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE ); List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses(); 

Это дало мне список процессов, таких как com.android.phone , com.android.chrome и т. Д.

Но когда я запускаю команду ps в своей adb shell , я мог видеть всю цепочку запущенных процессов. Я прилагаю скриншот всех тех процессов, которые выполняются в моей системе. Выполнение процессов на моих устройствах

Как видно, есть несколько процессов Android System, которые также работают как /system/bin/vold и /system/bin/installed и т. Д.

Однако они не сообщаются API getRunningAppProcesses() . В своих документах говорится, что этот API:

Возвращает список процессов приложений, запущенных на устройстве.

Означает ли это, что он не вернет «системный процесс»? И если это так, какой вариант разработчика может потребоваться для повторения процесса «ВСЕ» на Android?

Что еще я пробовал: пробовал еще 2 API от ActivityManager :

  1. getRecentTasks(int maxNum) и его вариант.

Но Android docs предупреждает о его использовании, как показано ниже:

Этот метод устарел на уровне API 21.

Что касается LOLLIPOP, этот метод больше не доступен для сторонних приложений

  1. getRunningServices(int maxNum)

Но оба они не могли дать мне такие имена, как /system/bin/debuggerd и т. Д.

ПРИМЕЧАНИЕ. Я запускаю Android-4.2 Jellybean, на не-Корневом устройстве.

Solutions Collecting From Web of "Список всех запущенных процессов в Android"

Вызывая API из ActivityManager , вы получаете только зарегистрированные приложения, то есть действия пользовательского интерфейса, а не все процессы. Те, которые вы видите с не обратным DNS-именем, но путь (например, /system/bin/* ) являются родными демонами, запускаемыми init и оставленными из ActivityManager .

Один из способов – получить список процессов непосредственно из /proc (так же, как это делает psys ps ). Для этого требуется программная переработка программ по каталогам там (т.е. /proc/[0-9]* ) и отсечение потоков ядра. Нити ядра – это те, у которых PPID 2, поэтому они легки. У родных демонов будет PPID 1. Приложения будут иметь PPID Zygote.

Ссылка: NewAndroidBook.com