Android性能测试数据收集(全)
获取用户PID
1、SDK版本大于26
1.找出所属pid
命令:ps -A|grep packageName(WINDOWS环境下将grep替换成findstr),下图第二列数据即为 PID
2、SDK版本小与26:ps |grep packageName(跟上面方法类似 )
获取用户UID
命令: dumpsys package packageName|findstr userId
Android环境下获取内存
通过ActivityManager获取对应PID占用的内存
ActivityManager mAm = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);MemoryInfo[] memoryInfoArray = mAm.getProcessMemoryInfo(pids);MemoryInfo pidMemoryInfo = memoryInfoArray[0];value[0] = pidMemoryInfo.nativePss;value[1] = pidMemoryInfo.dalvikPss;value[2] = pidMemoryInfo.getTotalPss();
Android环境下获取流畅度
Choreographer.getInstance().postFrameCallback( new Choreographer.FrameCallback(){ @Override public void doFrame(long frameTimeNanos){ //每次绘制都加1 result+=1;} })//上面这个方法需要不停调用//计算公式: 流畅度=( result*1000)/采集间隔周期(单位ms)
Android环境下获取消耗的流量
获取上传流量
TrafficStats.getUidTxBytes(pid)
获取下载流量
TrafficStats.getUidRxBytes(pid)
ADB命令获取内存
获取设备总内存命令:adb shell cat /proc/meminfo |findstr MemTotal
获取指定包名占用内存: adb shell dumpsys meminfo pakagename
获取指定包名内存方式二:adb shell top -n 1 |findstr packageName (部分机型包名结尾会显示+导致无法匹配 )
获取CPU占有率的方法
1.获取指定pid的CPU开始执行前占用时间
命令:adb shell cat /proc/pid/stat (如果文件不存在,则说明该进程不是Android系统维护,无法获取对应CPU)
startProcessCpu =24446+10320;
2.获取总的CPU开始执行前占用时间
命令:adb shell cat /proc/stat
startCpu=9096266+....323086+0+0+0;
3.休眠1秒
4.再次执行步骤1、2
endProcessCpu=步骤1;
endCpu =步骤2;
5.最后取得CPU占用率公式如下:
((endProcessCpu-startProcessCpu)/(endCpu-startCpu))*100
6.进程的jiffies数为:startProcessCpu
流量
1、下载流量
命令: adb shell cat /proc/net/xt_qtaguid/stats |grep -E "uid"
第6列数据即为下载流量(这里需要将LO(本地)的流量排除掉)
2、上传流量
命令: adb shell cat /proc/net/xt_qtaguid/stats |grep -E " uid"
第8列数据即为下载流量(主要需要将LO(本地)的流量排除掉)
更多相关文章
- Android(安卓)Webservices 返回多行多列数据(Dataset)
- Android(安卓)AM命令及使用
- Android(安卓)银行卡扫描识别获取卡号
- Android自定义控件之自定义属性解析
- Android动态获取U盘路径
- 解决adb的adb server version (32) doesn't match this client (
- Android之创建自定义属性
- android启动过程配置文件的解析与语法 .
- android 工具 HierarchyViewer activity树结构查看