精品久久久久久久久水蜜桃|丁香花五月|新中文字幕麻豆视频|美女下面粉嫩粉嫩冒白浆高清|日本黄h兄妹h动漫一区二区三区|床片激情免费视频|羞羞动漫在线入口免费阅读

抖音短的ui分析與總結(jié),抖音短不流暢

移動(dòng)端UI卡頓問(wèn)題解決方案 。
十年大廠架構(gòu)師 。
今天我們聊聊移動(dòng)端性能優(yōu)化、ui卡頓內(nèi)存問(wèn)題等棘手的問(wèn)題 , 也是面試中經(jīng)常會(huì)問(wèn)到的,這些問(wèn)題怎么來(lái)解決?第一個(gè)我們今天先討論UI卡頓問(wèn)題,解決方案分為常規(guī)方案和黑科技 。
·常規(guī)方案就比如說(shuō)我們的UI是不是布局圈套太深,沒(méi)有使用性能優(yōu)化相關(guān)的一些方式,view Stub等等的merge標(biāo)簽、include標(biāo)簽就是純UI方面的 。當(dāng)然了我們常規(guī)的解決方法,我們通過(guò)一些Systraces traceView等等的一些安卓自帶的一些檢測(cè)工具來(lái)做檢查,這些都是屬于常規(guī)的一些方式 。

抖音短的ui分析與總結(jié),抖音短不流暢

文章插圖
·當(dāng)然還有一些常規(guī)的里邊當(dāng)然還包括布局的檢查,是不是這一塊業(yè)務(wù)也比較復(fù)雜,等等的業(yè)務(wù)相關(guān)的梳理 。這是第一個(gè)方面 。
·那么黑科技我們又從哪些來(lái)考慮?首先比如說(shuō)我們的進(jìn)到某個(gè)頁(yè)面 , 主頁(yè)面它的內(nèi)容特別多特別復(fù)雜 。這個(gè)時(shí)候我們是不是考慮到了異步加載,因?yàn)檎麄€(gè)頁(yè)面XML比較大,我們是不是安卓默認(rèn)的setContentView解析,這個(gè)XML都是在主線程,我們是不是可以把它提前來(lái)做解析,提前放在異步線程里邊 。
抖音短的ui分析與總結(jié),抖音短不流暢

文章插圖
還沒(méi)到進(jìn)到這個(gè)頁(yè)面,我們提前準(zhǔn)備好,我們到頁(yè)面來(lái)了,再進(jìn)行一個(gè)view的加載,那么這就是Asynclnflater一些方式,放在子線程里邊,提前做好準(zhǔn)備來(lái)加載 。同時(shí)你像掌閱科技的一些方案 , X2C方案 。
它的一個(gè)目的就是我們寫(xiě)的布局還是那個(gè)布局,還是寫(xiě)的那個(gè)XML 。但是我們通過(guò)編譯的時(shí)候?qū)慻radle插件來(lái)解析了XML , 把它轉(zhuǎn)化成一個(gè)類(lèi)似于flutter這種申明式布局 。這樣我們?cè)跇I(yè)務(wù)團(tuán)隊(duì)寫(xiě)開(kāi)發(fā)的過(guò)程中對(duì)它們的代碼侵入性是非常小的,我們?cè)谥骶€程來(lái)解析XML,這是一種方式 。
抖音短的ui分析與總結(jié),抖音短不流暢

文章插圖
·還有你比如在抖音的一些方案,它就是說(shuō)安卓刷新機(jī)制,它要來(lái)刷新uiui變化了之后它會(huì)同步屏障 , 它會(huì)發(fā)同步屏障,這個(gè)時(shí)候ui也會(huì)發(fā)消息,發(fā)消息它會(huì)在messageQueue輪詢\messageQueue里邊的消息屏障 。
抖音短的ui分析與總結(jié),抖音短不流暢

文章插圖
【抖音短的ui分析與總結(jié),抖音短不流暢】但是這個(gè)消息,如果消息前邊有大量的業(yè)務(wù) , 在同步屏障前面這個(gè)時(shí)候就是導(dǎo)致了整個(gè)的消息刷新相關(guān)的message,得不到及時(shí)的執(zhí)行 。所以說(shuō)有一種方案拿到當(dāng)前app的messageQueue,然后拿到里邊的同步屏障,把它屏障插到整個(gè)messageQueue的對(duì)列的隊(duì)首最前邊 。這樣我的UI就得到了及時(shí)刷新 。至于你后邊業(yè)務(wù)相關(guān)的message你再繼續(xù)執(zhí)行,這也是一些非常黑科技的一些方式 。