Android应用查看CPU与内存占用说明

Android应用查看CPU与内存占用说明,第1张

命令中的"应用包名"应该替换为你需要查询的包名

执行命令后, 在输出的内容中, 第二项即应用的进程名, 例如:

那么 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小记等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9688338.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存