1. 以上圖中,cpu中control為控制器,用於協調整個cpu的執行,包括取出指令,控制其他模組的執行
2. 綠色的為alu是算數邏輯單元,用於資料邏輯計算
3. 橙色cache和dram分別為快取和ram,用於儲存資訊
* cup的控制較為複雜,而alu較少,因此cpu擅長處理各種複雜邏輯運算,但是不擅長數學尤其是浮點運算
複製**
layoutinflater方法將布局載入進記憶體
cpu經過計算將ui物件轉換成多維圖形
通過opengl呼叫gpu
gpu對圖形進行柵格化
上述步驟如果在16ms內完成直接在顯示器上顯示,如果完不成垂直同步等待下一幀完成
60fps 在與手機進行互動的時候,如觸控與反饋60幀以下的人是可以感應出來的,60幀以上不能感覺到變化
當頻率地獄60幀的時候感覺畫面卡頓和停滯現象
android系統會每隔16ms傳送vsync訊號(1000/60=16.66ms),觸發對ui進行渲染,如果每次渲染都成功這樣就能達到流暢的畫面所需要的60fps,為了能夠實現60fps,這就意味著計算機渲染大多數操作都必須再16ms內完成
cpu繪製過程是根據cpu傳送的指令來的,他很傻,讓他畫什麼就畫什麼,16ms就畫一次,造成有些影象被其他影象進行覆蓋,底下以及面上的影象都要繪製,造成了必要的浪費
藍色 過渡繪製一次 無過渡繪製
淡綠 過渡繪製兩次
淡紅 過渡繪製三次
深紅 過渡繪製四次
這代表了4種不同程度overdraw情況,我們的目標是儘量減少紅色,overdraw看到更多的藍色區域
將ui物件轉換成多邊形和紋理
cpu傳遞資料到gpu,gpu進行繪製
cpu減少xml轉換成物件的時間
cpu減少重複繪製
效能優化看上去非常高大上,但其實就是細節決定成敗,需要對原理性的東西了解清楚,每一步都有什麼不一樣,針對每乙個步驟進行細緻化的優化,效能優化是一種思想,而不是一套具體的操作方法
布局中的背景是否有需要(主題背景)
是否可以刪除多餘布局
自定義view是否進行了裁剪
布局是否夠扁平化
UI繪製優化之布局渲染流程與原理
1 cpu 的任務繁多,做邏輯計算外,還要做記憶體管理 顯示操作,因此在實際運算的時候效能會大打折扣,在沒有 gpu 的時代,不能顯示複雜的圖形,其運算速度遠跟不上今天覆雜三維遊戲的要求。即使 cpu的工作頻率超過 2ghz 或更高,對它繪製圖形提高也不大。這時 gpu的設計就出來了。2 cpu與g...
android View繪製流程
android的view的繪製流程大概就如同我們作畫一樣,分為以下幾步 1.測量出每個view的大小。2.根據上一步測量得到的大小,確定view繪製的座標位置。3.有了具體的位置及view大小,開始繪製view。我們的activity在建立的時候就會對應的建立乙個window,用於展示我們需要展示的...
View 的繪製流程
view的measure 過程由其measure方法完成,measure 方法是乙個final型別的方法,子類不能重寫。在view的mesure方法中會呼叫onmeasure 我們只看onmeasure方法就可了。view原始碼 protected void onmeasure int widthm...