Список всех запущенных процессов в 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