Android UI優化方案

2021-07-11 07:24:07 字數 868 閱讀 2964

通常來說,android需要把xml布局檔案轉換成gpu能夠識別並繪製的物件。這個操作是在displaylist的幫助下完成的。displaylist持有所有將要交給gpu繪製到螢幕上的資料資訊。

listview adapter優化

overdraw(過度繪製)描述的是螢幕上的某個畫素在同一幀的時間內被繪製了多次。在多層次的ui結構裡面,如果不可見的ui也在做繪製的操作,這就會導致某些畫素區域被繪製了多次。這就浪費大量的cpu以及gpu資源。

overdraw有時候是因為你的ui布局存在大量重疊的部分,還有的時候是因為非必須的重疊背景。例如某個activity有乙個背景,然後裡面 的layout又有自己的背景,同時子view又分別有自己的背景。僅僅是通過移除非必須的背景,這就能夠減少大量的紅色overdraw區域,增加 藍色區域的佔比。這一措施能夠顯著提公升程式效能。

前面提到過每次gc發生的時候,所有的執行緒都是暫停狀態的。gc所占用的時間和它是哪乙個generation也有關係,young generation的每次gc操作時間是最短的,old generation其次,permanent generation最長。執行時間的長短也和當前generation中的物件數量有關,遍歷查詢20000個物件比起遍歷50個物件自然是要慢很多 的。

雖然google的工程師在盡量縮短每次gc所花費的時間,但是特別注意gc引起的效能問題還是很有必要。如果不小心在最小的for迴圈單元裡面執 行了建立物件的操作,這將很容易引起gc並導致效能問題。通過memory monitor我們可以檢視到記憶體的占用情況,每一次瞬間的記憶體降低都是因為此時發生了gc操作,如果在短時間內發生大量的記憶體**與降低的事件,這說明 很有可能這裡有效能問題。我們還可以通過heap and allocation tracker工具來檢視此時記憶體中分配的到底有哪些物件。

Android UI效能優化 Overdraw

什麼是overdraw?overdraw就是螢幕上某個畫素點在同一幀被繪製了多次。在多層布局結構中,不可見部分也會被繪製。舉個例子,乙個白色頁面上有乙個按鈕。系統首先繪製白色背景,然後在白色背景上繪製按鈕,最後在按鈕背景上繪製按鈕內容。那麼按鈕和按鈕內容就造成了overdraw。其實overdraw...

Android UI效能優化(渲染)

谷歌05年初發布效能優化典範,是的開發者學會如何去識別 診斷 解決安卓應用開發中所存在的效能問題。首當其衝的便是渲染的效能優化。在正常的開發中,可以移除不必要的background,以減少繪製的程度。如設定了主布局檔案的背景顏色,就可以移除listview以及listview的items中的一些ba...

Android UI效能優化 理論篇

如果你的某個操作花費時間是24ms,系統在得到vsync訊號的時候就無法進行正常渲染,這樣就發生了丟幀現象。那麼使用者在32ms內看到的會是同一幀畫面。使用者容易在 ui 執行動畫或者滑動 listview 的時候感知到卡頓不流暢,是因為這裡的操作相對複雜,容易發生丟幀的現象,從而感覺卡頓。有很多原...