GPU渲染顏色信息
4.x:
藍色Draw | 代表繪制時間,即創建和更新display lists的時間
紅色Process | 代表執行時間,即系統進行2D渲染Display List的時間
橙色Execute | 代表處理時間,即CPU等待GPU完成渲染處理的時間
5.x:
新增紫色 | 代表渲染線程寫入資源所需時間
6.x:
變成9種顏色,將渲染過程中的幾大步驟進一步細分,可以通過Android Studio上的GPU Monitor可以看到各顏色含義更新如下(關于GPU Monitor下一小節會具體介紹):
Swap Buffers | 對應原先Process(橙色),表示處理任務的時間,也可以說是CPU等待GPU完成任務的時間,線條越高,表示GPU做的事情越多;
Command Issue | 對應原先Execute(紅色),表示執行任務的時間,這部分主要是Android進行2D渲染顯示列表的時間,為了將內容繪制到屏幕上,Android需要使用Open GL ES的API接口來繪制顯示列表,紅色線條越高表示需要繪制的視圖更多;
Sync & Upload | 表示的是準備當前界面上有待繪制的圖片所耗費的時間,為了減少該段區域的執行時間,我們可以減少屏幕上的圖片數量或者是縮小圖片的大小;
Draw | 對應原先Update(藍色),表示測量和繪制視圖列表所需要的時間,藍色線條越高表示每一幀需要更新很多視圖,或者View的onDraw方法中做了耗時操作;
Measure/Layout | 表示布局的onMeasure與onLayout所花費的時間,一旦時間過長,就需要仔細檢查自己的布局是不是存在嚴重的性能問題;
Animation | 表示計算執行動畫所需要花費的時間,包含的動畫有ObjectAnimator,ViewPropertyAnimator,Transition等等。一旦這里的執行時間過長,就需要檢查是不是使用了非官方的動畫工具或者是檢查動畫執行的過程中是不是觸發了讀寫操作等等;
Input Handling | 表示系統處理輸入事件所耗費的時間,粗略等于對事件處理方法所執行的時間。一旦執行時間過長,意味著在處理用戶的輸入事件的地方執行了復雜的操作;
Misc Time/Vsync Delay | 表示在主線程執行了太多的任務,導致UI渲染跟不上vSync的信號而出現掉幀的情況;出現該線條的時候,可以在Log中看到這樣的日志: I/Choreographer(*): Skipped XXX frames! The application may be doing too much work on its main thread
關于這一部分的具體原理及詳細解釋可以參考Android性能優化典范:
http://hukai.me/android-performance-patterns/
http://hukai.me/android-performance-patterns-season-5/
安卓繪圖原理
http://blog.csdn.net/xiaosongluo/article/details/51212296