参考:

Android 查看进程ID(PID)比较进程优先级

在Android OS 中每个应用程序都有一个自己进程,运行在自己的进程中,每个进程都有自己的ID即PID,这个ID有时候对我们开发很有用,那么如何来获取这个对应应用的PID呢?如何比较两个进程的优先级呢?下面我们就来进行详解:

1.查看当前手机的进程

DOS下面cmd(win+r),然后打开adb shell ,直接 ps 命令,显示当前手机所有进程。

Android @id @+id区分 手机android id在哪里查看_java


各列参数意义:

USER 				//进程当前用户;
PID 			    //Process ID,进程ID;
PPID		 	   //Process Parent ID,进程的父进程ID;
VSIZE      	    //Virtual Size,进程的虚拟内存大小;
RSS            	//Resident Set Size,实际驻留”在内存中”的内存大小;
WCHAN     		 //休眠进程在内核中的地址;
PC            	 //Program Counter;
NAME       	 //进程名;

2.利用(ps |grep 项目包名)命令,过滤自己需要的进程,获取pid

ps |grep com.xq.myjaraar

com.xq.myjaraar 为项目的包名。

Android @id @+id区分 手机android id在哪里查看_jar_02

3.比较进程优先级

进程的Importance等级以及adj值,决定了系统在资源吃紧的情况下该杀掉哪些进程。

通过 cat /proc/进程id/oom_adj 可以看到当前进程的adj指,比如上面测试我们输入

cat /proc/9479/oom_adj

cat查看进程的adj值后我们会得到其返回结果“0”,说明当前进程正位于前台。
同样,我按home键,把app退到后台,这个时候,再输入cat /proc/12807/oom_adj
cat 查看进程的adj值后得到其返回结果为“1”,说明当前进程位于后台。

不同机型可能返回的值有所区别。

上面我们测试的结果:permission denied,请注意需要root手机。

相较于Importance等级而言adj值可以赋予我们更多的参考价值,从上述adj值的定义中我们可以看到,值越小优先级越高,比如native进程的adj值为-17,对于这个adj值的进程来说,系统根本不会动它一分一毫,实质上当进程的adj值去到2时系统就很少会因为其它原因而去杀死它,这些在研究进程保活中都非常重要。