如何获取Android系统的所有运行过程列表,包括系统启动过程?
我尝试使用以下代码获取列表:
ActivityManager activityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
Run Code Online (Sandbox Code Playgroud)
这给了我的进程,如列表com.android.phone,com.android.chrome等等.
但是当我ps在我的命令中运行命令时adb shell,我可以看到其他一堆进程在运行.我附上了在我的系统中运行的所有进程的屏幕截图.

正如人们所看到的,有几款Android系统的进程也运行像/system/bin/vold和/system/bin/installed等.
但是,getRunningAppProcesses()API 没有报告这些内容.在其文档中,它说这个API:
返回设备上运行的应用程序进程列表.
这是否意味着它不会返回"系统进程"?如果是这样的话,开发人员可以选择迭代Android上运行的"ALL"进程?
- 我还尝试了什么:
尝试了另外两个API ActivityManager:
getRecentTasks(int maxNum) 它是变种.但Android文档警告其使用如下:
此方法在API级别21中已弃用.
从LOLLIPOP开始,此方法不再适用于第三方应用程序
getRunningServices(int maxNum)但这两个都不能给我这样的名字/system/bin/debuggerd,等等.
注意:我在非Root设备上运行Android-4.2 Jellybean.
通过调用API ActivityManager,您只能获得向其注册的应用程序 - 即UI活动 - 而不是所有进程.那些你看到的非反向DNS名称,但路径(例如/system/bin/*)是本机守护进程,由init,开始,并离开ActivityManager.
解决这个问题的一种方法是直接从中获取进程列表/proc(就像工具箱ps一样).这需要在那里以编程方式迭代(即/proc/[0-9]*),并修剪内核线程.内核线程是a PPID的2,所以它们很容易.原生守护进程将具有PPID1.应用程序将具有PPIDZygote.
| 归档时间: |
|
| 查看次数: |
38618 次 |
| 最近记录: |