在真機設備下有一個開發者選項,這個你們都知道,咱們最經常使用的就打開'USB調試'功能,方便真機調試。程序員
在這開發者選項中還有個選項,'調試GPU過分繪製'web
這裏選擇第二個選項'顯示過分繪製區域'
緩存
能夠看到針對該界面 每個控件周邊都有一塊顏色區域app
顏色對應:佈局
測試發現大多數手機app都存在過分繪製的問題,這也由於產品設計的時候沒有這種佈局嵌套的概念,致使程序員開發出產品想要的效果就容易形成過分繪製的狀況。性能
過分繪製形成的結果是在部分性能差的設備,會出現卡頓的問題,不過通常對於當年出的設備不會形成影響。測試
--------------------------------------------------------------------------------------------------------------------------------------------優化
此外,開發者選項中還有一個選項‘GPU呈現模式分析’,選擇'在屏幕上顯示爲條形圖'就會發現界面底部出現條形圖spa
每一條柱狀線都包含三部分,
藍色表明測量繪製Display List的時間,
紅色表明OpenGL渲染Display List所須要的時間,
黃色表明CPU等待GPU處理的時間。 設計
中間有一根綠色的橫線,表明16ms,咱們須要確保每一幀花費的總時間都低於這條橫線,這樣纔可以避免出現卡頓的問題。
當頻繁超過綠線的時候對於性能很差的時候就會出現卡頓的狀況。
相關知識:
CPU: 中央處理器,它集成了運算,緩衝,控制等單元,包括繪圖功能.CPU將對象處理爲多維圖形,紋理(Bitmaps、Drawables等都是一塊兒打包到統一的紋理).
GPU:一個相似於CPU的專門用來處理Graphics的處理器, 做用用來幫助加快格柵化操做,固然,也有相應的緩存數據(例如緩存已經光柵化過的bitmap等)機制。
OpenGL ES是手持嵌入式設備的3DAPI,跨平臺的、功能完善的2D和3D圖形應用程序接口API,有一套固定渲染管線流程. 附相關OpenGL渲染流程資料
DisplayList 在Android把XML佈局文件轉換成GPU可以識別並繪製的對象。這個操做是在DisplayList的幫助下完成的。DisplayList持有全部將要交給GPU繪製到屏幕上的數據信息。
格柵化 是 將圖片等矢量資源,轉化爲一格格像素點的像素圖,顯示到屏幕上,過程圖以下.
------------------------------------------------------------------------------------------------------------------------------------
優化
Android對於界面渲染流暢的要求爲 1秒鐘60幀 即每一幀都在16.6ms內
優化點:
一、icon圖片儘可能使用 png格式 , 照片等大型圖片用jpg
二、減小多餘的嵌套層數
三、外層設置背景顏色以後,內部view能夠再也不設置背景顏色值
四、自定義view的優化