
命令中的"应用包名"应该替换为你需要查询的包名
执行命令后, 在输出的内容中, 第二项即应用的进程名, 例如:
那么 22411 即为该应用当前的pid
其中的"应用的pid"为上一步获取到的pid
执行命令后, 命令行工具即会打印应用运行信息
命令中的"应用包名"应该替换为你需要查询的包名
命令执行后过段时间即会打印内存占用大小
如何获取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 thispid;
}
public void setPid(int pid) {
thispid = pid;
}
public int getUid() {
return thisuid;
}
public void setUid(int uid) {
thisuid = uid;
}
public int getMemSize() {
return thismemSize;
}
public void setMemSize(int memSize) {
thismemSize = memSize;
}
public String getProcessName() {
return thisprocessName;
}
public void setPocessName(String processName) {
thisprocessName = processName;
}
}
其次,我们通过android API 获取进程信息:
// 获得系统进程信息
private ArrayList<ProcessInfo> getRunningAppProcessInfo(){
ActivityManager mActivityManager = (ActivityManager) getSystemService(ContextACTIVITY_SERVICE);
ArrayList<ProcessInfo> processInfoList = new ArrayList<ProcessInfo>();
List<ActivityManagerRunningAppProcessInfo> appProcessList = mActivityManagergetRunningAppProcesses();
for (ActivityManagerRunningAppProcessInfo appProcessInfo : appProcessList) {
int pid = appProcessInfopid;
int uid = appProcessInfouid;
String processName = appProcessInfoprocessName;
int[] myMempid = new int[] { pid };
DebugMemoryInfo[] memoryInfo = mActivityManagergegetProcessMemoryInfo(myMempid);
//kb
int memSize = memoryInfo[0]dalvikPrivateDirty;
ProcessInfo processInfo = new ProcessInfo();
processInfosetPid(pid);
processInfosetUid(uid);
processInfosetMemSize(memSize);
processInfosetPocessName(processName);
processInfopkgnameList = appProcessInfopkgList ;
processInfoListadd(processInfo);
return processInfoList;
}
//判断某进程是否存在
private boolean isProcessExisting(String packageName){
ArrayList<ProcessInfo> processInfoList = getRunningAppProcessInfo();
for(ProcessInfo process : processInfoList){
String[] packageList = processpkgnameList;
for (String pkg : packageList) {
if(pkgequals(packageName)){
return true;
}
}
}
return false;
}
假设App包名为comsomething,使用多进程的页面标记进程名为":test",使用
只能查看到主进程的pid,想要查看comsomething:test,则必须写全
而使用
即可查看到两个进程的基本信息
当然,前提是使用多进程时指定的进程名是以":xxx"或”App包名xxx“,因为此命令是在adb shell ps的基础上进行pname的过滤,如果子进程使用的name是其他规则,只能单独查看。
HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0 );
PROCESSENTRY32 procentry=sizeof(PROCESSENTRY32);
BOOL bFlag=Process32First( hSnapShot, &procentry ) ;
while( bFlag )
{
if(stricmp(procentryszExeFile, "你的程序名 ")==0)
processid=procentryth32ProcessID; //找到
bFlag=Process32Next(hSnapShot,&procentry);
}
注意一个程序可能有几个实例同时运行,所以可能同时找到几个ID。
以上就是关于Android应用查看CPU与内存占用说明全部的内容,包括:Android应用查看CPU与内存占用说明、如何获取android 进程信息、ADB命令查看App主进程和私有进程PID小记等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)