Android性能優(yōu)化UI篇

? ? 在說性能優(yōu)化之前,我們必須了解為什么要做性能優(yōu)化碰辅,首先第一點(diǎn)肯定是為了用戶體驗(yàn)懂昂,你想啊要是你的App用起來很卡,頁(yè)面加載慢騰騰的没宾,用戶能一直忍受你嗎凌彬?其二性能優(yōu)化也是對(duì)我們程序員自己的考驗(yàn),優(yōu)化過程需要我們掌握很多的東西循衰,比如說Java的內(nèi)存模型铲敛,垃圾回收機(jī)制,Dalvik和Art虛擬機(jī)会钝,Android底層等等等等知識(shí)伐蒋,還有很多工具的使用,這章主要記錄一些UI優(yōu)化方面的東西迁酸。

? ? UI優(yōu)化主要的目的是為了讓頁(yè)面更加流暢先鱼,大家都知道Android系統(tǒng)每隔16ms發(fā)出垂直同步(VSYNC)信號(hào),觸發(fā)對(duì)UI的渲染奸鬓,如果每次都在16ms內(nèi)渲染成功焙畔,達(dá)到流暢的畫面所需要的60fps(表示60楨每秒),那用戶就不會(huì)感覺到頁(yè)面的卡頓串远,

如果頁(yè)面在16ms內(nèi)還沒有繪制完宏多,就會(huì)出現(xiàn)丟幀現(xiàn)象儿惫,還是顯示的上一楨頁(yè)面,給人感覺卡住了一樣伸但,


所以我們優(yōu)化要做的事情就是盡量讓頁(yè)面在16ms內(nèi)繪制完肾请,解決這種過度繪制的問題,下面我們就具體說說怎么解決這個(gè)問題更胖。

? ? 我們的App都是有很多頁(yè)面铛铁,首先得找到要優(yōu)化的頁(yè)面,這里我推薦使用兩個(gè)工具,一個(gè)是手機(jī)自帶的顯示過度繪制區(qū)域的功能,我用的魅族手機(jī)是在開發(fā)者選項(xiàng)里面的昵慌,另一個(gè)是Android Studio自帶的工具Lint,我個(gè)人更喜歡用手機(jī)自帶的這個(gè)工具梳毙,比較直觀的顯示頁(yè)面的繪制情況,在開啟這個(gè)功能后頁(yè)面顯示如下圖捐下,

App的每個(gè)頁(yè)面的控件都會(huì)加上額外的圖層账锹,總共4種顏色,代表4種繪制的級(jí)別坷襟,如下圖奸柬,

其中紅色代表的是最嚴(yán)重的過度繪制,從上面依次減弱婴程,我們要做的就是修改這些區(qū)域廓奕,讓它達(dá)到藍(lán)色這種級(jí)別。通過使用這個(gè)工具档叔,我們能很快的找到需要修改的頁(yè)面桌粉。

在找到這個(gè)頁(yè)面后,接下來我們就得分析是什么原因?qū)е逻@個(gè)頁(yè)面過度繪制衙四,在這里我們還得使用一個(gè)工具Hierarchy View铃肯,它可以把整個(gè)頁(yè)面中每個(gè)控件的所占區(qū)域用矩形標(biāo)示出來,并計(jì)算出每個(gè)控件在測(cè)量布局和繪制所花費(fèi)的時(shí)間传蹈,而且過度繪制的控件會(huì)用紅色的圓圈標(biāo)出來押逼,至于怎么使用這個(gè)工具可以看這篇文章,通過這個(gè)工具我們可以把問題具體到某個(gè)控件上面惦界,接下來就是解決這個(gè)控件的過度繪制問題了挑格,在這里提供幾個(gè)解決的思路:

1,減少頁(yè)面的布局層次結(jié)構(gòu)。

2,減少不必要的背景圖片或背景顏色沾歪。

3,減少View的更新次數(shù)恕齐,比如調(diào)用View的requestLayout或者invalidate,setVisiable等等方法,都會(huì)導(dǎo)致View重新繪制。

4,嘗試使用Android系統(tǒng)提供<include><merge><viewstub>等標(biāo)簽显歧,不要把一大堆控件放在同一個(gè)xml布局文件里面。

5,嘗試使用RecyclerView代替ListView吧确镊,RecyclerView還能與實(shí)現(xiàn)嵌套滑動(dòng)接口的控件做各種交互士骤。

總結(jié),把自己遇到的問題寫出來蕾域,給自己提個(gè)醒拷肌,也希望能給一些人提供一個(gè)思路。


參考:

http://www.reibang.com/p/e9e05ce5b0c9,

http://www.csdn.net/article/2015-01-20/2823621-android-performance-patterns

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旨巷,一起剝皮案震驚了整個(gè)濱河市巨缘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌采呐,老刑警劉巖若锁,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斧吐,居然都是意外死亡又固,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門煤率,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仰冠,“玉大人,你說我怎么就攤上這事蝶糯⊙笾唬” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵昼捍,是天一觀的道長(zhǎng)识虚。 經(jīng)常有香客問我,道長(zhǎng)端三,這世上最難降的妖魔是什么舷礼? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮郊闯,結(jié)果婚禮上妻献,老公的妹妹穿的比我還像新娘。我一直安慰自己团赁,他們只是感情好育拨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著欢摄,像睡著了一般熬丧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怀挠,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天析蝴,我揣著相機(jī)與錄音害捕,去河邊找鬼。 笑死闷畸,一個(gè)胖子當(dāng)著我的面吹牛尝盼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佑菩,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼盾沫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了殿漠?” 一聲冷哼從身側(cè)響起赴精,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绞幌,沒想到半個(gè)月后蕾哟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啊奄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年渐苏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菇夸。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琼富,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庄新,到底是詐尸還是另有隱情鞠眉,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布择诈,位于F島的核電站械蹋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏羞芍。R本人自食惡果不足惜哗戈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荷科。 院中可真熱鬧唯咬,春花似錦、人聲如沸畏浆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刻获。三九已至蜀涨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厚柳。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工氧枣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人别垮。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓挑胸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宰闰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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