在開發(fā)者選項中有個“ GPU呈現(xiàn)模式分析(Profile GPU rendering,選擇在adb shell dumpsys gfxinfo中)”功能,在開啟這個功能后,系統(tǒng)就會記錄保留每個界面最后128幀圖像繪制的相關時間信息。在開啟這個功能后,重新啟動APP,滑動頁面然后執(zhí)行adb命令
adb shell dumpsys gfxinfo com.xiaomi.shop?
(我用的是小米max2手機測試的小米商城首頁。)
主要 注意Profile data in ms:下面的數(shù)據(jù)(如下圖)
Draw:表示在Java中創(chuàng)建顯示列表部分中,OnDraw()方法占用的時間。
Process:表示渲染引擎執(zhí)行顯示列表所花的時間,view越多,時間就越長
Execute:表示把一幀數(shù)據(jù)發(fā)送到屏幕上排版顯示實際花費的時間。其實是實際顯示幀數(shù)據(jù)的后臺緩存區(qū)與前臺緩沖區(qū)交換后并將前臺緩沖區(qū)的內容顯示到屏幕上的時間。
Draw + Process + Execute = 完整顯示一幀 ,這個時間要小于16ms才能保證每秒60幀。
(吐槽:簡書太爛了,粘貼數(shù)據(jù)全亂了,只能截圖了。)
將上面的數(shù)據(jù)導入到excel表格中,生成堆積圖,如下圖:
堆積柱狀圖
圖中可以清晰的看出在滑動時,只有少量的幀耗時超過16ms。基本達到了每秒60幀的要求。如果每幀耗時超過16ms,就要結合操作進行具體的優(yōu)化了。