在android开发中,经常会需要优化apk的性能,然而那些方法是比较耗费性能的,哪些方法又是比较占用内存的,我们很难得知,好在google为我们提供了一个工具,traceView,该工具在sdk的tools文件夹里边,只要配置了环境变量,就可以直接使用的。

traceView是Android中为开发者提供的一个可视化的工具,用来评测app中每一个方法运行的性能。

我首先编写一个简单的activity,如下:

package com.example.testtrace;

import android.app.Activity;
import android.os.Bundle;
import android.os.Debug;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Debug.startMethodTracing("haha");
        calcuteAdd();
        calcutePlus();
    }


    public void calcuteAdd() {
        int sum = 0;
        for (int i = 0; i < 10000; i++) {
            sum += i;
        }
    }

    public void calcutePlus() {
        int total = 100000;
        for (int i = 0; i < 3000; i++) {
            total -= i;
        }
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        Debug.stopMethodTracing();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

代码很简单,就是分别运行了加法和减法这两个方法。细心的码农可能已经发现,我在onCreate方法中运行了一个方法

Debug.startMethodTracing("haha");

在onStop方法中运行了一个方法:

Debug.stopMethodTracing();

没错,就是在onCreate方法当中开启数据的采集,在onStop方法当中停止数据的采集。其中”haha”是采集到的数据保存的文件名称.

将应用安装到sdcard上,然后再sdcard上会生成一个haha.trace文件,然后将该haha.trace文件导出,通过sdk中的tools目录下的traceview来进行分析.

android 使用chrt命令 android trace_traceview


我们首先将保存在sdcard根目录的”haha.trace”拷贝到本地,然后执行”traceview d:/haha.trace”,注意必须要首先配置traceview的环境变量。此时会看到下面这样一个面板:

android 使用chrt命令 android trace_android 使用chrt命令_02


左边就是我们运行的方法:每一个方法都有一个parent和children,其中:

parent:表示那个方法调用了这个方法

children:表示该方法调用了那些方法

在所有的方法右边有很多的选项卡,下面逐个解释其代表的含义:

1.Incl Cpu Time%

该方法运行期间所执行的时间与总时间的百分比

2.Incl Cpu Time

该方法本身运行需要的时间

3.Excl Cpu Time%

不包括子方法,也就是自己本身运行的时间占总时间的百分比

4.Excl Cpu Time

不计入该方法中调用其他方法的时间,所以看那个方法消耗性能,主要是看这个参数的值

5.Incl Real Time%

改方法本身运行的真实时间占总时间的百分比

6.Incl Real Time

该方法本身运行的时间

7.Excl Real Time%

该方法本身占用cpu的时间和该方法本身运行的时间和总时间的百分比

8.calls+recurcalls/total

该方法运行期间被调用的总次数

9.cpu time/call

运行期间,该方法运行所需要的时间可以啊看到我们在activity中写的一个calcuteAddF方法的各个方面的指数:

android 使用chrt命令 android trace_traceview_03

ok,关于traceview的学习就到这里了,希望大家能够喜欢。