最近,我需要考察程序对手机的资源的占用情况。
我希望能够获取并记录手机的CPU占用率,内存占用率等信息。由于手机的资源本身比较紧张,因此我希望将手机与PC连接后,使用PC来记录并处理相关数据。
在PC端,我使用python脚本。
1.使用shell命令获取系统信息
通常在PC端,我们可以打开命令提示符,使用adb命令来获取
与手机相关的信息。例如,使用
adb shell [shell 命令],就可以执行一次shell命令。
在python脚本中,我们可以使用os.system(“adb shell [shell 命令]”)来执行一次shell命令,但是
这种方法的不足是:该方法不能获取命令执行后的返回信息;而我执行shell命令的最重要的目的是
获取手机的相关信息。由于上述矛盾,这个方法行不通。
在python脚本中,我们还可以用results = os.popen(“adb shell [shell 命令]”).readlines()来执行
一次shell命令。执行命令后返回的信息存储在results中。
(1)CPU占用信息的获取 :
sysInfo = os.popen(“adb shell top -n 1”).readlines() #通过此句代码,top的一次输出就存储在了
sysInfo这个list中。其中sysInfo[3]的值为“User 86%, System 11%, IOW 0%, IRQ 1%”。
我们可以利用python的re模块将所需的信息提取出来。
sysCPUInfo = re.match(‘.*\s+(\d+).*\s+(\d+).*\s+(\d+).*\s+(\d+).*’,sysInfo[3]), 执行此句代码后,
sysCPUInfo.group(1)的值为86,sysCPUInfo.group(2)的值为11,sysCPUInfo.group(3)的值为0,
sysCPUInfo.group(4)的值为1,于是与系统CPU占用率相关的信息就提取了出来。同时,
通过查找整个sysInfo列表,找到与某一程序相关的信息,进而就可以提取出某一程序的系统资源占用
情况。
(2)内存的使用情况:
读取/proc/meminfo文件,使用公式1-((MemFree+Buffers+Cached)/MemTotal)来计算系统的
内存占用率。使用cat /proc/meminfo读取文件,提取并记录数据的方法同上。
2. 写一个计算内存,CPU占用率的android小程序,写入日志。PC端使用logcat捕获信息。
想要写该程序,需要参考以下文章
http://www.bangchui.org/read.php?tid=40347
http://www.cnblogs.com/cody1988/archive/2011/09/29/2195717.html