Android 工具:TraceView

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/p106786860/article/details/73065488

一、TraceView工具


TraveView采集和分析方法的执行时间和数据,用于跟踪你的代码中的性能下降问题;

二、启动TraveView


Android Studio->Tools->Android->Android Device Monitor->DDMS;
这里写图片描述

三、使用TraveView


这里有两种方式,来生trace日志文件:
1. 在你的代码中使用Debug类 ,调用它的startMethodTracing()和stopMethodTracing()方法,来启动和暂停收集trace日志信息。这种方式非常精确,因为你可以在你的代码中指定从哪里开始和结束收集trace日志信息;
2. 使用DDMS中的Method Profiling功能来生成trace日志,这种方法精确性比较低,但是在你无法访问代码或者不需要精确日志的时候比较有用;
下面我们分别使用如下两种方式生成日志信息;
方法一:
在想要分析的代码中加入Debug类的startMethodTracing()和stopMethodTracing()方法调用(比如分析某个Activity从onCreate到onDestroy生命周期的方法调用),并且在AndroidManifest.xml中添加相关权限;
MainActivity.java

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //开始收集日志(/sdcard/home.trace)
        Debug.startMethodTracing("home");
        setContentView(R.layout.activity_main);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //停止收集日志
        Debug.stopMethodTracing();
    }
    ... ...
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
     <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.qunar.home">
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <application>
         ... ...
     </application>
</manifest>

运行到该Activity页面,然后退出(执行了该Activity的onCreate和onDestroy方法),生成的日志会保存在你的设备的手机SD卡中。使用adb pull命令获取该日志文件;

D:\>adb pull ./data/media/0/Android/data/com.qunar.home/files/home.trace
[100%] ./data/media/0/Android/data/com.qunar.home/files/home.trace

注意:如果在设备的SD卡中找不到trace日志文件,可以进入adb shell,使用find . -name
“*.trace”命令进行查找;

DDMS->File->Open File打开获取的trace日志文件进行分析,如下文图示;
方法二:
Devices->选择app->点击Start Method Profiling按钮->Profiling Options->Sample based Profiling(Sampling frequency:1000microseconds)->OK按钮;
这里写图片描述
运行你的App,如果你关注用户体验的性能问题,执行相关对的操作,完毕后点击Stop Method Profiling按钮。等待trace加载,如果你记录了比较长时间它可能会花费较长的时间;
TraceView包含几个部分:Timeline面板、Profile面板和Find搜索框:
这里写图片描述

  1. Timeline面板:可以看见你的代码随时间的执行顺序,使用鼠标拖拽Timeline可以放大和缩小查看,放大时每个方法会扩展成一个彩色的U型图,图的左边是方法执行的开始,右边是结束;

    • 每行代表一个线程;
    • 在Timeline上每个条代表一个方法的执行;
    • 不同的方法显示不同的颜色,你可以看见一个方法的执行时间内颜色是相同的;
  2. Profile面板:显示了某个线程(你在Timeline面板中选择的线程)中各个函数的调用情况;

    • 选择一个方法来查看谁调用了它(Parent)和它调用了谁(Children);
    • 被选中的方法也会在Timeline中高亮显示;
    • 这些列分别显示了CPU执行时间和调用次数等信息,如下:
      Incl Cpu Time:某函数占用的CPU时间,包含内部调用其它函数的CPU时间;
      Excl Cpu Time:某函数占用额CPU时间, 但不包含内部调用其它函数的CPU时间;
      Incl Real Time:某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间;
      Excl Real Time:某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间;
      Call+Recur Calls/Total:某函数被调用的次数以及递归调用次数的百分比;
      Cpu Time/Call:某函数调用CPU时间和调用次数的比,相当于该函数平均执行时间;
      Real Time/Call:某函数调用真实时间和调用次数的比,相当于该函数平均真实执行时间;
  3. Find输入框:可以搜索你感兴趣的方法,高亮显示在Timeline上;


1.新技术,新未来!欢迎大家关注“1024工场”微信服务号,时刻关注我们的最新的技术讯息。(甭客气!尽情的扫描或者长按!)
服务号

猜你喜欢

转载自blog.csdn.net/p106786860/article/details/73065488