中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Android開發(fā)性能優(yōu)化

2022-02-21    分類: 網(wǎng)站建設

布局優(yōu)化在Android開發(fā)時,如果創(chuàng)建的布局層次結構比較復雜,View樹嵌套的層次比較深,會使頁面展現(xiàn)的事件比較長,導致應用運行起來越來越慢,所以需要進行布局優(yōu)化。


1.include標簽共享布局:
將通用的布局抽取出來,獨立成一個XML文件,在需要用到的頁面中使用include標簽引入進來,減少代碼量,便于修改。
2.ViewStub標簽實現(xiàn)延遲加載:
ViewStub是一種不可視并且大小為0的視圖,可以延遲到運行時才填充布局資源。當ViewStub設置為可見或者被inflate之后,會填充布局資源,ViewStub會被填充的視圖代替,和普通的視圖沒有區(qū)別。
ViewStub在需要顯示的時候才會進行視圖的填充,實現(xiàn)延遲加載的目的。

3.merge標簽減少布局層次:

當一個獨立的布局文件最外層是FrameLayout且這個布局不需要設置背景等屬性時或者當前布局是另外一個布局的子布局時,可以使用merge來減少布局的層次。

4.盡量使用CompoundDrawable:

在LinearLayout布局中,如果存在相鄰的ImageView和TextView,可以使用compound drawable合二為一成為一個TextView,ImageView中的圖片變成TextVIew的drawableTop/drawableLeft/drawableRight/ddrawableBottom屬性,之間的間隔使用drawablePadding屬性來代替。
5.使用
Lint:Lint也可以用來檢查應用的布局是否存在可優(yōu)化的地方,為優(yōu)化布局設置的規(guī)則如下:
AndroidLintUseCompoundDrawables:盡量使用CompoundDrawable。MergeRootFrame:使用merge標簽減少布局層次。TooManyViews:單個布局中存在太多的View,默認情況下,單個布局中View的個數(shù)最多只能是80個,可以考慮使用CompoundDdrawables等來減少View的個數(shù)。TooDeepLayout:避免過深的布局嵌套,默認情況下,單個布局中最多層級是10,可以考慮使用RelativeLayout來減少布局的層次。UselessParent:當一個布局不是一個SrcollView或者根布局,
只有一個子View且沒有設置背景時可以將它移除掉,并將它的子View移動到它的父容器中,得到更扁平的布局層次。
**NestedWeights:**android:layout_weight屬性會使得View控件被測量兩次,當一個LinearLayout擁有非0dp值的android:layout_weight屬性,這時如果將它嵌套在兩一個擁有非0dp的android:layout_weight的LinearLayout,這時測量的次數(shù)將呈指數(shù)級別增加。

UselessLeaf:一個布局如果沒有子View也沒有設置背景,通??梢砸瞥?,可以得到更扁平和高效的布局層次。

InefficientWeight:當LinearLayout中只有一個子View定義了android:layout_weight屬性,更高性能的做法是使用0dp的android:layout_height或者android:layout_weidth來替換它,這個子View就不需要測量它自身對應的大小。
網(wǎng)絡優(yōu)化
網(wǎng)絡優(yōu)化可以節(jié)省網(wǎng)絡流量,節(jié)省電量,提高應用的響應。
1.避免DNS解析:
DNS是域名系統(tǒng),根據(jù)應用請求所用的域名URL去網(wǎng)絡映射表中查找對應的IP地址,這個過程可能會需要上百毫秒的時間,可能會存在DNS劫持的危險。所有根據(jù)具體的業(yè)務需求,可以采用增加動態(tài)更新能力的IP方式,或者在IP方式訪問失敗時切換到域名訪問方式。
2.合并網(wǎng)絡請求:
對于網(wǎng)絡請求應該盡量減少請求的接口,能夠合并的網(wǎng)絡請求就盡量合并。
3.預先獲取數(shù)據(jù):
預先獲取數(shù)據(jù)能夠?qū)⒕W(wǎng)絡請求集中在一次,其他時間段手機就可以切換到空閑狀態(tài),避免經(jīng)常性的喚醒和空閑,起到節(jié)省電量的作用。
4.避免輪詢:
輪詢是指客戶端每隔一段時間就向服務端主動發(fā)起的網(wǎng)絡請求,存在需要的數(shù)據(jù)就拉取,沒有就等待下一次輪詢。一般情況下能使用推送替換的盡量使用推送,避免使用Thread.sleep()函數(shù)循環(huán)等待,可以使用系統(tǒng)AlarmMananger實現(xiàn)定時輪詢。
5.優(yōu)化重連機制:
盡量避免網(wǎng)絡請求失敗時,無限制循環(huán)重試連接,可以設定一個大重連次數(shù),超過次數(shù)限制之后結束重連,等一段時間后再嘗試連接。
6.離線緩存:
對于圖片,文件等數(shù)據(jù),可以使用二級緩存策略,當緩存中有對應的圖片或者文件時,可以直接從緩存中讀取,不需要網(wǎng)絡請求,避免網(wǎng)絡延遲,節(jié)省流量。
7.壓縮數(shù)據(jù)大?。?br />對于客戶端來說,可以對發(fā)送給服務器的數(shù)據(jù)進行gzip壓縮,同時可以選用更優(yōu)的數(shù)據(jù)傳輸格式來減少網(wǎng)絡上面?zhèn)鬏數(shù)臄?shù)據(jù)。
8.不同的網(wǎng)絡環(huán)境使用不同的超時策略:
可以通過監(jiān)聽ConnectivityMananger.CONNECTIVITY_ACTION的變化來獲取最新的網(wǎng)絡類型,動態(tài)調(diào)整網(wǎng)絡超時時間。
9.CDN的使用:
CDN,內(nèi)容發(fā)布網(wǎng)絡,盡可能避免網(wǎng)絡上可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的環(huán)節(jié),實現(xiàn)更快,更穩(wěn)定的數(shù)據(jù)傳輸,其中CDN加速能夠緩解電信核心網(wǎng)絡延遲帶來的影響。

網(wǎng)站標題:Android開發(fā)性能優(yōu)化
URL標題:http://www.rwnh.cn/news40/144040.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站響應式網(wǎng)站、網(wǎng)站收錄、ChatGPT域名注冊、網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
金溪县| 潞西市| 彩票| 洛川县| 阜康市| 嘉鱼县| 分宜县| 贵州省| 临漳县| 奈曼旗| 永昌县| 元朗区| 泗洪县| 辽宁省| 顺平县| 汉源县| 嵩明县| 穆棱市| 江门市| 佛教| 利川市| 河北省| 华池县| 阿克苏市| 昌宁县| 璧山县| 榆社县| 凤山市| 阳新县| 本溪市| 太和县| 东辽县| 临高县| 承德县| 社旗县| 新干县| 德钦县| 敖汉旗| 大名县| 涟源市| 浦北县|