成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何在Android項(xiàng)目中優(yōu)化卡頓-創(chuàng)新互聯(lián)

如何在Android項(xiàng)目中優(yōu)化卡頓?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到金鄉(xiāng)網(wǎng)站設(shè)計(jì)與金鄉(xiāng)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋金鄉(xiāng)地區(qū)。

卡頓原因

過(guò)于復(fù)雜的布局

  • 界面性能取決于 UI 的渲染性能,UI 渲染的整個(gè)過(guò)程由 CPU 和 GPU 兩個(gè)部分協(xié)同完成。CPU 負(fù)責(zé) UI 布局元素的 Measure、Layout、Draw 等相關(guān)運(yùn)算執(zhí)行,GPU負(fù)責(zé)柵格化(rasterization),將 UI 元素繪制到屏幕上。

  • 如果 UI 布局層次太深,或是自定義控件的 onDraw 中有復(fù)雜運(yùn)算,CPU 的相關(guān)運(yùn)算就可能大于 16ms,導(dǎo)致卡頓。

過(guò)度繪制

UI 線程的復(fù)雜運(yùn)算

  • UI 線程的復(fù)雜運(yùn)算會(huì)造成 UI 無(wú)響應(yīng),導(dǎo)致 ANR,但更多的是造成 UI 響應(yīng)停滯卡頓,ANR 是卡頓的極致。

頻繁的 GC

優(yōu)化方法

1、減少刷新次數(shù)

比如進(jìn)度更新,要進(jìn)度有變化再去刷新,且保證頻率不得高于系統(tǒng)的刷新頻率。

2、避免非必要的刷新

若控件不可見(jiàn),則無(wú)需刷新。

3、避免后臺(tái)線程影響

如列表控件,在滑動(dòng)時(shí)不要去加載圖片,可以在滑動(dòng)監(jiān)聽(tīng)里停止圖片的加載。

4、局部刷新

如 RecyclerView 的 DiffUtil。自定義 View 可以使用下面兩個(gè)方法:

invalidate(Rect dirty);
invalidate(int left, int top, int right, int bottom);

5、盡量使用屬性動(dòng)畫(huà),它減少了自身的重繪。最后要清除

StringBuilder,List 等在創(chuàng)建時(shí)傳入一個(gè)合適的參數(shù)指定初始容量,以避免頻繁擴(kuò)容的開(kāi)銷(xiāo)。

6、開(kāi)啟硬件加速

7、原理可見(jiàn) Android硬件加速原理與實(shí)現(xiàn)簡(jiǎn)介,理解Android硬件加速原理的小白文

Application 級(jí)別

<application android:hardwareAccelerated="true" />

Activity 級(jí)別

<activity android:hardwareAccelerated="true" />

Window 級(jí)別

getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

View 級(jí)別

// 如果是 software,會(huì)將 View 繪制到一個(gè) Bitmap,
// 然后依然是通過(guò)硬件加速將 Bitmap 繪制到 Canvas
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
  • LAYER_TYPE_NONE:普通渲染方式,不會(huì)返回一個(gè)離屏的緩沖,默認(rèn)值。

  • LAYER_TYPE_HARDWARE:如果這個(gè)應(yīng)用使用了硬件加速,這個(gè) View 將會(huì)在硬件中渲染為 硬件紋理,如果應(yīng)用程序并沒(méi)有被硬件加速,則其效果和 LAYER_TYPE_SOFTWARE 相同。

  • LAYER_TYPE_SOFTWARE:此 View 通過(guò)軟件渲染為一個(gè) Bitmap。

檢查是否開(kāi)啟了硬件加速

view.isHardware-Accelerated();
Canvas.isHardwareAccelerated();

如果 View 中要處理中文長(zhǎng)文本,需要關(guān)閉硬件加速。因?yàn)槊總€(gè)中文編碼不一樣,緩存效果不理想。

監(jiān)控

  1. 《Android 應(yīng)用性能優(yōu)化最佳實(shí)踐》2.8 章,主要利用 MainLooper 里的 Printer。

  2. BlockCanary 開(kāi)源庫(kù)

  3. StrctMode

ANR

Activity 的 View:5 秒無(wú)響應(yīng)
BroadcastReceiver:10 秒無(wú)響應(yīng)
Service:20 秒無(wú)響應(yīng)

ANR 時(shí),系統(tǒng)會(huì)生成一個(gè) traces.txt 的文件放在 /data/anr/ 下。通過(guò) adb 命令將其導(dǎo)出到本地

$adb pull data/anr/traces.txt ~/Desktop

關(guān)于如何在Android項(xiàng)目中優(yōu)化卡頓問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前名稱(chēng):如何在Android項(xiàng)目中優(yōu)化卡頓-創(chuàng)新互聯(lián)
本文URL:http://jinyejixie.com/article0/gpiio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作建站公司、定制開(kāi)發(fā)網(wǎng)站收錄、微信小程序App開(kāi)發(fā)

廣告

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

搜索引擎優(yōu)化
灵台县| 高邮市| 罗山县| 广南县| 锡林浩特市| 鹤庆县| 阳春市| 延津县| 曲阜市| 曲阜市| 龙江县| 平远县| 蒙阴县| 红河县| 吴江市| 龙陵县| 宁晋县| 慈利县| 永靖县| 长岭县| 许昌市| 永胜县| 横山县| 镇沅| 泗阳县| 资中县| 贺兰县| 闻喜县| 莱州市| 北安市| 松原市| 黔南| 武邑县| 河北区| 泸定县| 三台县| 合江县| 阳信县| 东乌珠穆沁旗| 应城市| 建湖县|