性能優化 1:卡頓檢測

1. 介紹卡頓之前,我們先了解幾個名詞

Jank:爲了保證應用的平滑性,每一幀渲染時間不能超過16ms,達到60幀每秒;如果UI渲染慢的話,就會發生丟幀,這樣用戶就會感覺到不連貫性,我們稱之爲Jank

FPS:每秒的幀數。對於界面一直不停刷新的應用如視頻,可以使用FPS來評價其流暢度

丟幀:應該在16ms完成的工作因各種原因沒有做完,佔了下n個16ms的時間,相當於丟了n幀

SM:和丟幀相對,在VSYNC機制中1s內有60個loop,因爲某幾次工作超過了16ms(丟幀),這樣loop就無法運行60次(理論最大值);流暢度越低說明當前程序越卡頓;SM能夠客觀衡量Android程度卡的程度

2. 造成應用卡頓原因無非以下幾種場景:

1. xml佈局不合理(造成過度繪製)
2. 代碼邏輯堵塞UI線程

針對第1點,是否過度繪製,我們可以通過 手機 -> 開發者選項 -> 調試GPU過度繪製,開啓後,運行APP查看區域佈局情況,佈局繪製了越多層,紅色就越深,越不合理

針對第2點,現在也有一些開源庫可以輔助我們定位卡頓原因;像 AndroidPerformanceMonitor、BlockCanary、leakcanary

3. 參考

  1. AndroidPerformanceMonitor

1. 移動APP性能評測-流暢度評測
2. Android性能優化-App卡頓
3. BlockCanary
4. UI卡頓檢測的兩種方法
5. BlockCanary — 輕鬆找出Android App界面卡頓元兇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章