Android面試知識整理-性能優(yōu)化

一窄坦、Android Profiler

1、CPU profiler(優(yōu)化CPU性能)


Call chart

橙色表示系統(tǒng) API 的函數(shù),綠色表示應用自有函數(shù)韵洋,藍色表示第三方 API(包括 Java 語言 API)的函數(shù)

水平表示調(diào)用時間,垂直表示調(diào)用者

Flame Chart(火焰圖)

相同調(diào)用堆棧聚合在一塊黄锤,耗時最多的放上面

Top Down自上而下(類似與火焰圖)

Bottom Up自下而上

2搪缨、Memory profiler

堆轉(zhuǎn)儲heap dump:記錄某一時間點的內(nèi)存使用情況

紅點按鈕:用于記錄一段時間內(nèi)內(nèi)存分配情況

使用方式:啟動app,使用一段時間觀察內(nèi)存使用情況鸵熟,進行heap dump查看有沒有異常(同一對象重復出現(xiàn)副编,對象占用內(nèi)存過大)場景如:切換橫豎屏,反復進行頁面跳轉(zhuǎn)

二流强、Leakcanary

只關注activity痹届,使用LeakCanary.install(this);

關注fragment打月,在onDestroy加入RefWatcher队腐;

不能檢測Service的內(nèi)存泄露

三、性能優(yōu)化基礎知識

1奏篙、卡頓優(yōu)化

應用層繪制柴淘,系統(tǒng)層渲染,android系統(tǒng)需要在16ms內(nèi)完成繪制,就不會出現(xiàn)卡頓

RelativeLayout會測量兩次(不推薦)为严,LinerLayout測量一次

卡頓優(yōu)化工具:Profile GPU Rendering敛熬、Debug GPU overDraw過度繪制檢測

2、耗電優(yōu)化

Battery Historian耗電分析工具

3第股、app包大小優(yōu)化

資源優(yōu)化应民、代碼優(yōu)化、代碼混淆

4炸茧、內(nèi)存優(yōu)化

內(nèi)存泄露:持有Activity引用瑞妇,如單例中、Handler中梭冠、內(nèi)部類中辕狰,資源未關閉、使用webview

內(nèi)存優(yōu)化:引用類型(強弱軟虛)控漠、內(nèi)存復用(線程池蔓倍、對象池)、使用合適的數(shù)據(jù)結(jié)構(gòu)盐捷、圖片內(nèi)存優(yōu)化

四偶翅、圖片處理

Bitmap優(yōu)化:對圖片進行尺寸壓縮、質(zhì)量壓縮碉渡,使用二級緩存

圖片常用格式:VectorDrawable/WebP/PNG/JPG

LruCache原理:LinkedHashMap(hashmap+雙向鏈表)訪問最多的移動到表尾聚谁,訪問最少的從表頭移除

在雙向鏈表里進行重排序

三級緩存:內(nèi)存、磁盤滞诺、網(wǎng)絡形导,一般下拉刷新時獲取數(shù)據(jù),或者定時獲取

AOP編程:如有多個登錄請求操作习霹,把這種操作封裝起來朵耕,在一處實現(xiàn)復雜邏輯編寫,其他位置只需簡單調(diào)用即可淋叶。AOP實現(xiàn)分靜態(tài)實現(xiàn)和動態(tài)實現(xiàn)(反射不推薦)阎曹,靜態(tài)實現(xiàn)常見方式APT(ButterKnife)、AspectJ

網(wǎng)絡編程:tcp/ip五層協(xié)議包括應用層(HTTP煞檩、HTTPS处嫌、SOAP)、傳輸層(TCP形娇、UDP)锰霜、網(wǎng)絡層(IP)、數(shù)據(jù)鏈路層(以太網(wǎng)桐早、WiFi)癣缅、物理層(光纜厨剪、電纜、雙絞線友存、無線電波)

TCP三次握手

1祷膳、服務器先創(chuàng)建傳輸控制塊,先進入LISTEN監(jiān)聽狀態(tài)屡立,監(jiān)聽客戶端的請求直晨;

2、客戶端創(chuàng)建傳輸控制塊膨俐,然后向服務器發(fā)送請求報文勇皇,此時報文信息為Seq=x,此時進入SYN-SENT同步已發(fā)送狀態(tài)焚刺;(第一次握手)

3敛摘、服務器收到請求報文后,發(fā)出確認報文乳愉,報文信息為ACK=x+1兄淫,Seq=y,此時服務器進入SYN-RCVD同步收到狀態(tài);(第二次握手)

4蔓姚、客戶端收到確認報文捕虽,向服務器發(fā)出確認報文,報文信息為ACK=y+1,Seq=x+1,此時客戶端進入ESTABLISHED已建立連接狀態(tài)坡脐;(第三次握手)

5泄私、服務端收到確認報文進入ESTABLISHED狀態(tài),雙方建立連接成功备闲。

第三次握手原因

第一次客戶端發(fā)送請求報文時挖滤,在傳輸時滯留時間過長,服務器沒有收到就沒有發(fā)出確認報文浅役。客戶端會又一次發(fā)送請求報文伶唯,此時服務器收到并確認觉既,與客戶端建立了連接。

此時第一次的報文到達了服務端乳幸,服務端確認并發(fā)送確認報文瞪讼,又會建立一次連接,造成資源浪費粹断。

而三次握手符欠,在第三次握手時,客戶端收到確認后瓶埋,就不會再發(fā)出錯誤的確認報文了希柿,也就不會繼續(xù)建立連接了诊沪。

TCP四次揮手

1、客戶端發(fā)出釋放報文曾撤,停止發(fā)送數(shù)據(jù)端姚,釋放報文信息為FIN=1,Seq=x+2,ACK=y+1,此時客戶端進入FIN-WAIT-1終止等待1狀態(tài)挤悉;(第一次揮手)

2渐裸、服務端收到釋放報文,發(fā)出確認報文(包含數(shù)據(jù))装悲,確認報文信息為ACK=x+3,服務端進入CLOSE-WAIT關閉等待狀態(tài)昏鹃;(第二次揮手)

3、客戶端收到確認報文后诀诊,此時客戶端進入FIN-WAIT-2終止等待2狀態(tài)洞渤,等待服務端發(fā)出釋放報文;

4畏梆、服務端將最后的數(shù)據(jù)發(fā)送完畢后您宪,向客戶端發(fā)送釋放報文,此時服務端進入LAST-ACK最后確認狀態(tài)奠涌,等待客戶端確認宪巨;(第三次揮手)

5、客戶端收到釋放報文后,發(fā)出再次確認報文笆怠,客戶端進入TIME-WAIT時間等待狀態(tài)逗栽,經(jīng)過2??MSL最長報文段壽命后,撤銷TCB傳輸控制塊怠晴,才進入close狀態(tài);(第四次揮手)

6浴捆、服務端收到確認報文蒜田,立即進入close狀態(tài),撤銷TCB傳輸控制塊选泻,結(jié)束連接

為什么會有2?MSL時間段冲粤?

(1)服務端在這時已經(jīng)發(fā)送完釋放和確認報文了,客戶端在第四次揮手時發(fā)送再次確認報文页眯,此報文有可能丟失梯捕,服務端沒有收到再次確認,服務端覺得沒有收到反饋窝撵,又發(fā)了一遍釋放和確認報文傀顾,客戶端就可以在2?MSL時間段內(nèi)收到服務端的第二次報文,然后發(fā)送再次確認報文碌奉,并重啟2*MSL計時器短曾。

(2)防止類似出現(xiàn)第三次握手的同樣情況寒砖,客戶端在第四次揮手時發(fā)送再次確認報文,在傳輸時滯留错英。

為什么是四次揮手呢入撒?

服務端數(shù)據(jù)和釋放報文可以分開發(fā)送,就多了一次揮手椭岩。


未完待續(xù)(glide茅逮、android啟動流程、android啟動模式判哥、handler献雅、集合框架)

(RecycleView、fragment塌计、屏幕適配挺身、內(nèi)容提供者、廣播)

(retrofit)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锌仅,一起剝皮案震驚了整個濱河市章钾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌热芹,老刑警劉巖贱傀,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伊脓,居然都是意外死亡府寒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門报腔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來株搔,“玉大人,你說我怎么就攤上這事纯蛾∠朔浚” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵翻诉,是天一觀的道長帆卓。 經(jīng)常有香客問我,道長米丘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任糊啡,我火速辦了婚禮拄查,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棚蓄。我一直安慰自己堕扶,他們只是感情好碍脏,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稍算,像睡著了一般典尾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糊探,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天钾埂,我揣著相機與錄音,去河邊找鬼科平。 笑死褥紫,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瞪慧。 我是一名探鬼主播髓考,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弃酌!你這毒婦竟也來了氨菇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤妓湘,失蹤者是張志新(化名)和其女友劉穎查蓉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體多柑,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡奶是,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了竣灌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聂沙。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖初嘹,靈堂內(nèi)的尸體忽然破棺而出及汉,到底是詐尸還是另有隱情,我是刑警寧澤屯烦,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布坷随,位于F島的核電站,受9級特大地震影響驻龟,放射性物質(zhì)發(fā)生泄漏温眉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一翁狐、第九天 我趴在偏房一處隱蔽的房頂上張望类溢。 院中可真熱鬧,春花似錦露懒、人聲如沸闯冷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛇耀。三九已至辩诞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纺涤,已是汗流浹背译暂。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洒琢,地道東北人秧秉。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像衰抑,于是被迫代替她去往敵國和親象迎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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