如何获取android 进程信息
2个回答
2014-12-23 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464989
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
如何获取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;
}
有时候为了完成某些功能比如监测某些程序的运行情况,我们可以通过动态的获取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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询