Android效能優化之布局優化

2021-08-28 22:37:28 字數 916 閱讀 1051

在乙個典型的顯示系統中,一般包括cpu、gpu和display三個部分;

display可以理解為螢幕或者顯示器,cpu是用來計算影象資料的,然後把計算好的資料交給gpu,gpu會對圖形資料進行渲染,再把渲染好的資料存到buffer(快取區)裡面,最後display也就是螢幕負責把buffer裡面的資料呈現出來。

顯示過程簡單來說,就是cpu和gpu定時準備好資料放入buffer,而display會每隔一段時間從buffer讀取資料進行展示。但是呢,這只是理想狀態。在現實操作中,重新整理率和幀率並不總是保持一致,也就是說gpu存入資料的時間和display讀取的時間是不一致的。針對這個情況,android系統引入了vsync機制,即垂直同步,我們可以理解為幀同步。它是為了讓gpu生成幀的速度和display重新整理的速度保持一致。android系統會每16ms傳送一次vsync的訊號,去觸發ui渲染更新,display只有收到vsync訊號後,才會執行畫面繪製。而vsync訊號最重要的作用就是防止出現畫面撕裂的情況,所謂畫面撕裂,就是指乙個畫面上出現了兩幀畫面的內容,我們來看一下畫面撕裂的例項:

為什麼出現這種情況呢,一般都是顯示卡輸出幀的速度高於顯示器重新整理幀的速度,從而導致顯示器並不能及時處理需要顯示的幀,最終出現了多個幀留在顯示器上的問題,畫面撕裂也就是幀率超過重新整理率的情況,如下圖所示:

android 布局效能優化

1.當我們在畫布局時,為了實現某個功能,優先考慮相對布局,然後再考慮別的布局,不要用絕對布局。因為相對布局會比其他布局少很多物件。如果物件過多,會發生堆疊溢位錯誤。2.merge 標籤,優化 ui結構。刪減多餘或者額外的層級,從而優化整個 android layout 的結構。核心功能就是減少冗餘的...

Android效能優化 布局篇

一.布局優化 一旦viewstub中指定的布局載入之後,這個id也就失敗了 viewstub只能inflate一次,之後viewstub物件會被置為空 viewstub demo viewstub findviewbyid r.id.viewstub demo public void onclick...

Android效能調優 繪製優化

4.1 開發者中的 過渡繪製 檢測 4.2 開發者中的 gpu 檢測 5.1 布局優化 1.減少介面巢狀,對於負責的view可以使用constraintlayout 2.使用include復用布局 3.使用merge去除多餘層級 4.使用viewstub提高載入速度 按需才載入 顯示 5.減少不必要...