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 @Override04 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 @Override21 protectedvoid onStop() {22 super.onStop();23 Debug.stopMethodTracing();// 結束記錄wirelessqa.trace24 }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"/> |
2.利用tools下的工具trace view開啟.trace檔案
3. 分析trace檔案