性能優(yōu)化之——布局優(yōu)化

第一步:要明白的幾個名詞

16ms是什么意思

大多數(shù)的Android顯示屏幕是以每秒60幀來刷新的(也就是60Hz)。一幀可以看做是一張的獨立圖片菩浙,60幀每秒就意味著:16ms=1000/60Hz粤攒,相當(dāng)于60fps望抽。這就是上面說的16ms

為什么有60fps這個概念算途?

這是因為人眼與大腦之間的協(xié)作無法感知超過60fps的畫面更新。12fps大概類似手動快速翻動書籍的幀率隘梨,這明顯是可以感知到不夠順滑的程癌。24fps使得人眼感知的是連續(xù)線性的運動,這其實是歸功于運動模糊的 效果轴猎。24fps是電影膠圈通常使用的幀率嵌莉,因為這個幀率已經(jīng)足夠支撐大部分電影畫面需要表達的內(nèi)容,同時能夠最大的減少費用支出捻脖。但是低于30fps是 無法順暢表現(xiàn)絢麗的畫面內(nèi)容的锐峭,此時就需要用到60fps來達到想要的效果,當(dāng)然超過60fps是沒有必要的(據(jù)說Dart能夠帶來120fps的體驗)

柵格化

柵格化簡單來說就是將向量圖轉(zhuǎn)化為機器可以識別的位圖的一個過程可婶。其中很復(fù)雜也比較很耗時沿癞,GPU就是用來加快柵格化的速度

第二步:記錄幾個 優(yōu)化方法

1.盡可能減少Overdraw,就是減少過渡繪制矛渴,減少布局嵌套的層次椎扬,去掉重復(fù)設(shè)置的背景;

Overdraw情況.png

藍色具温、淡綠蚕涤、淡紅,深紅代表了4種不同程度的Overdraw的情況铣猩,我們的目標(biāo)就是盡量減少紅色Overdraw钻趋,看到更多的藍色區(qū)域。

減少層級方法:

1.1剂习、善用相對布局Relativelayout
1蛮位、本身來說用Relative Layout會比最外層用其他例如LinearLayout要少一層
2、LinearLyoaut太過單一鳞绕,復(fù)雜一點的就得嵌套來實現(xiàn)失仁,用Relative Layout則不用

例如:


RelativeLayout好處.png
1.2、viewstub標(biāo)簽

平時開發(fā)會遇到動態(tài)控制某個view是否顯示们何,一般做法是直接再Xml里設(shè)置gone萄焦,優(yōu)點:邏輯處理簡單,比較靈活 冤竹;缺點:雖然把View的初始可見View.GONE但是在Inflate布局的時候View仍然會被Inflate拂封,也就是說仍然會創(chuàng)建對象,會被實例化鹦蠕,會被設(shè)置屬性冒签。也就是說,會耗費內(nèi)存等資源
推薦的做法是使用Android.view.ViewStub
ViewStub是一個輕量級的View钟病,它一個看不見的萧恕,不占布局位置刚梭,占用資源非常小的控件∑彼簦可以為ViewStub指定一個布局朴读,在Inflate布局的時候,只有ViewStub會被初始化走趋,然后當(dāng)ViewStub被設(shè)置為可見的時候衅金,或是調(diào)用了ViewStub.inflate()的時候,ViewStub所向的布局就會被Inflate和實例化簿煌,然后ViewStub的布局屬性都會傳給它所指向的布局典挑。這樣,就可以使用ViewStub來方便的在運行時啦吧,要還是不要顯示某個布局。
但ViewStub也不是萬能的拙寡,下面總結(jié)下ViewStub能做的事兒和什么時候該用ViewStub授滓,什么時候該用可見性的控制。
點擊詳見

1.3肆糕、merge標(biāo)簽

merge標(biāo)簽是作為include標(biāo)簽的一種輔助擴展來使用般堆,它的主要作用是為了防止在引用布局文件時產(chǎn)生多余的布局嵌套。
子布局外層用的layout诚啃,被include過來的外層也有個layout淮摔,這樣就造成了多余的布局嵌套

布局嵌套.png

2.減少listview中g(shù)etView中的耗時操作,一些自定義的view盡可能減少invalidate的調(diào)用始赎;

3.盡可能不要在UI線程做過多耗時的操作和橙;

參考:
http://www.cnblogs.com/hoolay/p/6248514.html
http://www.reibang.com/p/02800806356c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市造垛,隨后出現(xiàn)的幾起案子魔招,更是在濱河造成了極大的恐慌,老刑警劉巖五辽,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件办斑,死亡現(xiàn)場離奇詭異,居然都是意外死亡杆逗,警方通過查閱死者的電腦和手機乡翅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罪郊,“玉大人蠕蚜,你說我怎么就攤上這事』陂希” “怎么了波势?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵翎朱,是天一觀的道長。 經(jīng)常有香客問我尺铣,道長拴曲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任凛忿,我火速辦了婚禮澈灼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘店溢。我一直安慰自己叁熔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布床牧。 她就那樣靜靜地躺著荣回,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戈咳。 梳的紋絲不亂的頭發(fā)上心软,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音著蛙,去河邊找鬼删铃。 笑死,一個胖子當(dāng)著我的面吹牛踏堡,可吹牛的內(nèi)容都是我干的猎唁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼顷蟆,長吁一口氣:“原來是場噩夢啊……” “哼诫隅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帐偎,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤阎肝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后肮街,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體风题,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年嫉父,在試婚紗的時候發(fā)現(xiàn)自己被綠了沛硅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡绕辖,死狀恐怖摇肌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仪际,我是刑警寧澤围小,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布昵骤,位于F島的核電站,受9級特大地震影響肯适,放射性物質(zhì)發(fā)生泄漏变秦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一框舔、第九天 我趴在偏房一處隱蔽的房頂上張望蹦玫。 院中可真熱鬧,春花似錦刘绣、人聲如沸樱溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽福贞。三九已至,卻和暖如春停士,著一層夾襖步出監(jiān)牢的瞬間挖帘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工向瓷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舰涌。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓猖任,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓷耙。 傳聞我的和親對象是個殘疾皇子朱躺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容