1.CPU與GPU工作流程
2.卡頓原因分析
3.Hierarchy Viewr工具的使用
4.實戰解決過渡優化
CPU與GPU工作流程
CPU和GPU是什麼?CPU簡單來說就是說邏輯計算,系統管理,比如計算圖片的大小寬度,顯示操作等等,在沒有GPU的時代,不能顯示覆雜的圖形,運算速度也遠跟不上覆雜的三維遊戲要求,GPU是由CPU計算出來所得出來的結果進行繪製,就好比軍師和將軍的一種關係。
image.png
卡頓原因分析
由於人類眼睛特殊生理結構,如果所看畫面的幀率高於每秒10-12幀的時候,就認爲是連貫的。(12fps 科學研究而來)
在與手機的交互過程中,如觸摸和反饋60幀以下人是能感覺出來的,60幀以上不能覺察到變化,低於60fps時畫面感覺到卡頓
Android系統每隔16ms發出發出VSYNC信號(1000ms/60=16ms),出發對UI進行渲染,如果每次渲染都成功這樣就能夠達到流暢的畫面所需要的60fps,爲了能夠實現60fps,這意味着計算渲染的大多數操作都必須16ms內完成
卡頓原理分析
image.png
這意味着CPU和GPU兩者一定要在16ms時間內完成才能正常的顯示一幀
那麼如何減少這兩部分的時間呢?
CPU減少XML轉換成對象的時間
GPU減少重複繪製的時間
什麼是過渡繪製?
GPU的過渡繪製,就跟刷牆一樣,一層層的進行,16ms刷一次,這樣就會造成,圖層覆蓋的現象,既無用的圖層還被繪製在底層,造成不必要的浪費。
GPU過渡繪製的幾種情況?
自動以空間中,onDraw方法做了過多的重複繪製
佈局層次太深,重疊性太強,用戶看不到的區域GPU也會渲染,導致耗時增加,就就是爲什麼面試的時候被問到減少佈局嵌套也會提升渲染速度。原理就是這麼來的。
Hierarchy Viewr工具的使用
檢測APP裏面是否過渡繪製,大廠裏面的方法都是這麼幹的,在手機開發者模式裏面打開選項,
image.png
實戰解決過渡優化
以下就不貼代碼了
佈局優化一 去掉默認的背景
image.png
佈局優化二, 非業務需求如果背景都是白色的話,去掉二層容器背景,總之最好不要與父類背景顏色一致而疊加
image.png
佈局優化原則
減少不必要的嵌套,計算耗時
多使用include,因爲CPU在繪製一遍之後,會緩存起來,下載再用到直接從內存取
總結:
性能優化其實不僅僅是一中技術,而是一種思想,你只聽說過他的高大上,卻不知道它其實就是各個細節處深入研究和處理,就像擠牙膏一樣。
1、佈局裏是否有背景?
2、是否可以刪除多餘的佈局
3、自定義View重疊的佈局是否進行了裁剪
4、佈局是否扁平化
作者:大蘇打小檸檬
鏈接:https://www.jianshu.com/p/914738d25a5b
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。