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

Android性能测试数据收集(全)_第1张图片

获取指定包名内存方式二: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性能测试)