通过proc获取CPU信息。
adb shell cat /proc/stat | grep cpu > totalcpu0
此处第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:
参数 解析(单位:jiffies)
(jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间)
user 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。
nice 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间
system 从系统启动开始累计到当前时刻,处于核心态的运行时间
idle 从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间
iowait 从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)
irq 从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)
softirq 从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)
stealstolen which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)
guest which is the time spent running a virtual CPU for guest operating systems under the control of the Linux kernel(since 2.6.24)
结论:总的cpu时间totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen +guest
可以每1s获取一次CPU信息,分析整机CPU占用率。
计算方法:
1、 采样两个足够短的时间间隔的Cpu快照,分别记作t1,t2,其中t1、t2的结构均为:
(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;
2、 计算总的Cpu时间片totalCpuTime
a) 把第一次的所有cpu使用情况求和,得到s1;
b) 把第二次的所有cpu使用情况求和,得到s2;
c) s2 - s1得到这个时间间隔内的所有时间片,即totalCpuTime = j2 - j1 ;
3、计算空闲时间idle
idle对应第四列的数据,用第二次的idle - 第一次的idle即可
idle=第二次的idle - 第一次的idle
4、计算cpu使用率
pcpu =100* (total-idle)/total
首先获取应用的进程id:
adb shell ps | grep com.package | awk '{print $2}' > tmp
根据进程id,通过proc获取CPU信息
while read line; do adb shell cat /proc/$line/stat | awk '{print $14,$15,$16,$17}' >> appcpu0; done < tmp
说明:以下只解释对我们计算Cpu使用率有用相关参数(14-17列)
参数 解释
pid 进程号
utime 该任务在用户态运行的时间,单位为jiffies
stime 该任务在核心态运行的时间,单位为jiffies
cutime 所有已死线程在用户态运行的时间,单位为jiffies
cstime 所有已死在核心态运行的时间,单位为jiffies
结论:进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,该值包括其所有线程的cpu时间。
之后可以每1s获取一次CPU信息,分析获得app的CPU占用率等信息。
相关推荐
鉴于某个垃圾博主只搬运两个小功能,竟然收30分,实在忍无可忍这种垃圾。app需要系统签名才可以获取信息,普通权限app只能部分信息。
Android获取手机APP安装列表,系统和非系统APP
安卓期末大作业Android天气预报app源码安卓期末大作业Android天气预报app源码安卓期末大作业Android天气预报app源码安卓期末大作业Android天气预报app源码安卓期末大作业Android天气预报app源码安卓期末大作业...
isInstallApp : 判断App是否安装 installApp : 安装App(支持6.0) installAppSilent : 静默安装App uninstallApp : 卸载App ...getAppsInfo : 获取所有已安装App信息 cleanAppData : 清除App所有数据
本源码演示Android如何获取系统内置的APP应用列表信息,比如获取android系统中的录音机、相机、应用包访问权限帮助程序、android系统信息、设置、联系人存储、外部存储设备属性、Android键盘(AOSP)、移动数据信息...
Android获取系统cpu信息,内存,版本,电量等信息 1、CPU频率,CPU信息:/proc/cpuinfo和/proc/stat 通过读取文件/proc/cpuinfo系统CPU的类型等多种信息。读取/proc/stat 所有CPU活动的信息来计算CPU使用率 下面我们...
获取android安装的APP(apk)签名md5值,输入包名点击查询,即可显示包名对应的签名md5值 查询后,自动保存;这个本来是写来自己公司用的小工具,在之前app开发的时候,调试微信登录等等需要用到签名的地方,因为...
实现效果:android手机扫描NFC卡唤醒App,再次扫描识别卡内信息。 实现思路:在rn端调用android原生方法获取NFC卡信息,通过android与rn端通信将数据返回rn端 。
android 背单词app源码(下载即用).zip基于安卓平台的背单词APP软件,代码完整下载即用,确保可以运行。 android 背单词app源码(下载即用).zip基于安卓平台的背单词APP软件,代码完整下载即用,确保可以运行。 ...
获取手机正在运行的app,以及当前前台正在运行的app(兼容android6.0)
android 获取手机里安装的app信息列表
基于Android的智慧校园APP设计 基于Android的智慧校园APP设计 基于Android的智慧校园APP设计 基于Android的智慧校园APP设计 基于Android的智慧校园APP设计 基于Android的智慧校园APP设计 基于Android的智慧...
毕业设计基于Android的移动音乐App播放系统项目源码毕业设计基于Android的移动音乐App播放系统项目源码毕业设计基于Android的移动音乐App播放系统项目源码毕业设计基于Android的移动音乐App播放系统项目源码毕业设计...
Android设置整体app字体大小.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android ...
先通过ActivityManager判断程序是否正在运行,然后给该程序一状态标识,然后开一线程不停去检测标志位的状况,如果发生改变,再通过判断即可获取程序启动关闭的瞬间,然后即可做相应的动作。本程序以music为例、
Android Studio实例源码,主要介绍常用app的代码
Android 单线程获取局域网在线设备,极速刷新arp文件并读取内容 从4分30s 优化到 0.150s
SHClientInfo:获取客户端 APP 各种信息(CPU 、地址、磁盘信息、电池信息、硬件信息)
基于Android的旅游app系统基于Android的旅游app系统基于Android的旅游app系统基于Android的旅游app系统基于Android的旅游app系统基于Android的旅游app系统基于Android的旅游app系统基于Android的旅游app系统基于...