如何获取android 进程信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取android 进程信息相关的知识,希望对你有一定的参考价值。

参考技术A 如何获取android 进程信息,有需要的朋友可以参考下。

有时候为了完成某些功能比如监测某些程序的运行情况,我们可以通过动态的获取android 进程信息:
1)首先我们定义下进程信息的model:

public class ProcessInfo
private int pid; // 进程id
private int uid; // 进程所在的用户id
private int memSize; //进程占用的内存,kb
private String processName; // 进程名
public String pkgnameList[] ;//运行在进程里的对应的所有程序的包名
public int getPid()
return this.pid;


public void setPid(int pid)
this.pid = pid;


public int getUid()
return this.uid;


public void setUid(int uid)
this.uid = uid;


public int getMemSize()
return this.memSize;


public void setMemSize(int memSize)
this.memSize = memSize;


public String getProcessName()
return this.processName;


public void setPocessName(String processName)
this.processName = processName;



其次,我们通过android API 获取进程信息:
// 获得系统进程信息

private ArrayList<ProcessInfo> getRunningAppProcessInfo()
ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ArrayList<ProcessInfo> processInfoList = new ArrayList<ProcessInfo>();
List<ActivityManager.RunningAppProcessInfo> appProcessList = mActivityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo appProcessInfo : appProcessList)
int pid = appProcessInfo.pid;
int uid = appProcessInfo.uid;
String processName = appProcessInfo.processName;
int[] myMempid = new int[] pid ;
Debug.MemoryInfo[] memoryInfo = mActivityManager.gegetProcessMemoryInfo(myMempid);
//kb
int memSize = memoryInfo[0].dalvikPrivateDirty;
ProcessInfo processInfo = new ProcessInfo();
processInfo.setPid(pid);
processInfo.setUid(uid);
processInfo.setMemSize(memSize);
processInfo.setPocessName(processName);
processInfo.pkgnameList = appProcessInfo.pkgList ;
processInfoList.add(processInfo);
return processInfoList;


//判断某进程是否存在

private boolean isProcessExisting(String packageName)
ArrayList<ProcessInfo> processInfoList = getRunningAppProcessInfo();
for(ProcessInfo process : processInfoList)
String[] packageList = process.pkgnameList;
for (String pkg : packageList)
if(pkg.equals(packageName))
return true;



return false;
本回答被提问者和网友采纳
参考技术B 打开设置>应用>正在运行。

以上是关于如何获取android 进程信息的主要内容,如果未能解决你的问题,请参考以下文章

RK3399平台开发系列讲解(内核调试篇)9.30如何在Linux kernel代码中获取当前进程的信息

android IPC

C++如何获取系统各个进程,以及各进程的信息;一定要写清楚点哦!

Android 如何获取当前状态下所有持有wakelock的进程

linux应用中,在一个进程内如何获取本进程内其它线程的堆栈信息、

如何在 PowerShell 或 C# 中获取进程的命令行信息