TraceView是什么
Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。
Traceview的作用
1. 查看跟踪代码的执行时间,分析哪些是耗时操作
2. 可以用于跟踪方法的调用,尤其是Android Framework层的方法调用关系
Traceview的使用步骤
分为以下三步:
1. 选择追踪范围加入记录代码
2.利用tools下的工具trace view打开.trace文件
3.分析trace文件
1. 选择追踪范围加入记录代码
首先,必须在程序当中加入代码,以便生成trace文件,有了这个trace文件才可以将其转化为图形。
要添加的代码如下:
1 |
Debug.startMethodTracing(); //开始 |
2 |
Debug.stopMethodTracing(); //结束 |
其中参数wirelessqa是要创建的trace文件的名称,wirelessqa.trace。默认路径是/sdcard/wirelessqa.trace,也可以自己制定/data/log/wirelessqa,表示文件在/data/log/wirelessqa.trace。
实例代码参考:
publicclass MainActivity extends Activity { 02 03 @Override 04 protectedvoid onCreate(Bundle savedInstanceState) { 05 super.onCreate(savedInstanceState); 06 setContentView(R.layout.activity_main); 07 setTitle(this.getClass().getName()); 08 View toLoginView = findViewById(R.id.to_login); 09 // 开始记录 sdcard/wirelessqa.trace文件 10 Debug.startMethodTracing("wirelessqa"); 11 toLoginView.setOnClickListener(new View.OnClickListener() { 12 13 publicvoid onClick(View view) { 14 Intent intent = new Intent(getApplicationContext(), LoginActivity.class); 15 startActivity(intent); 16 } 17 }); 18 } 19 20 @Override 21 protectedvoid onStop() { 22 super.onStop(); 23 Debug.stopMethodTracing();// 结束记录wirelessqa.trace 24 } 25 }
说明:
开发文档中说可以在activity的onCreate()中添加Debug.startMethodTracing(), 而在onDestroy()中添加Debug.stopMethodTracing(),但是在实际的测试时发现这种方式其实并不好用,因为通常情况下我们的activity的onDestroy()是由系统决定何时调用的,因此可能等了很长时间都不会得到这个trace文件。
因此决定在onStop()中来调用Debug.stopMethodTracing()。这样当我们切换到其它activity或者点击home键的时候onStop()就会被调用,我们也就可以得到完整的trace file。
别忘了加入访问SD卡的权限
1 |
<uses-permissionandroid:name= "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> |
2 |
<uses-permissionandroid:name= "android.permission.WRITE_EXTERNAL_STORAGE" /> |