今天我們來學習下 Android 中 UI卡頓方面的知識,UI卡頓的原理、UI卡頓的原因分析、UI卡頓的優化。
一、UI卡頓的原理
1、Android系統每隔16ms發出VSYNC信號,觸發對UI進行渲染;
2、View的繪製幀數每秒保持60fps最佳,這要求每幀的繪製時間不超過16ms(1000/60),如果安卓不能在16ms內完成界面的渲染,那麼就會出現丟幀卡頓現象;
二、UI卡頓的原因分析
1、在UI線程中做輕微的耗時操作,導致UI線程卡頓;
2、佈局Layout過於複雜,無法在16ms內完成渲染;
3、同一時間動畫執行的次數過多,導致CPU和GPU負載過重;
4、View過度繪製,導致像素在同一幀的時間內被繪製多次,使CPU和GPU負載過重;
5、View頻繁的觸發measure、layout,導致measure、layout累計耗時過多和整個View頻繁的重新渲染;
6、頻繁的觸發GC操作導致線程暫停,導致暫時阻塞渲染操作;
7、冗餘資源及邏輯等導致加載和執行緩慢;
8、ANR;
三、UI卡頓的優化
1、佈局優化 :
- 使用include、ViewStub、merge標籤;
- 減少佈局的嵌套、去除冗餘的佈局;
- 使用自定義View取代複雜的嵌套佈局,減少mesure、layout的耗時操作。
2、ListView優化
- 複用convertView;
- 滑動不加載圖片,更新UI;
3、背景和圖片優化
- 減少不必要的背景設置;
- 圖片壓縮處理顯示;
4、避免ANR
四、實踐
參考資料:
http://blog.csdn.net/qq_30379689/article/details/73698192