有一种方法可以读取所有进程,而不仅仅是正在运行的进程。
如果我正确理解Android,则一次仅运行一个进程,而其他所有进程都被冻结(忽略了后台进程)
答案 0 :(得分:1)
您可以使用以下代码段获取当前正在运行的所有Android应用进程:
ActivityManager activityManager = (ActivityManager)BaseContext.GetSystemService(Context.ActivityService);
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.GetMemoryInfo(memoryInfo);
List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = activityManager.RunningAppProcesses as List<ActivityManager.RunningAppProcessInfo>;
然后,您可以遍历名为runningAppProcesses
的列表,并在过程信息类中询问其他信息位(如果需要),这些信息可以是found listed here.
这里有几个例子:
ProcessName -与该对象关联的进程的名称。
Pid -此过程的pid;如果没有则为0。
Uid -此过程的用户ID。
编辑:
根据下面的操作注释,他们需要“冻结”(暂停)的流程,以下是一些其他信息:
过去,您可以获取正在运行的任务列表,该列表与进程并不完全相同,但是由android定义为:
返回当前正在运行的任务的列表,最多 最近排在第一位,之后排在老位。注意“正在运行” 并不意味着当前已加载任何任务的代码或活动 -任务可能已被系统冻结,以便下次将其带到前台时可以以先前的状态重新启动。
List<ActivityManager.RunningTaskInfo>
但是,根据android文档,此功能在API级别21中已弃用。
从Build.VERSION_CODES.LOLLIPOP开始,此方法不再可用 第三方应用程序:以文档为中心的介绍 最新消息意味着它可以将个人信息泄露给呼叫者。对于 向后兼容,它将仍然返回其一小部分 数据:至少是呼叫者自己的任务,可能还有其他一些任务 例如已知不敏感的房屋。
由于Android上面提到的原因,我认为您无法做自己想做的事情,有关更多信息,您可以前往this link.