91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android性能優化方案分析

發布時間:2021-11-08 15:31:03 來源:億速云 閱讀:128 作者:iii 欄目:開發技術

本篇內容介紹了“Android性能優化方案分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1、指標

量化性能的指標有很多,但最重要的就是以下5種:

  • 包大小

  • 響應時間

  • 內存

  • CPU

  • 耗電量

優化性能就是可以從以上5點入手。

2、包大小優化

顧名思義就是減少apk包體積大小,apk大小主要取決于res下的資源文件、.class文件,

具體優化措施有:

壓縮圖片大小,再在項目中使用。
AndroidStudio內,可以將png等格式的圖片壓縮為.webp格式,這可以進一步減少圖片大小。
盡可能地減少本地資源的使用,可從技術方案上考慮從服務端拉取圖片、lottie、so庫等資源。
利用lottie替換幀動畫的使用,減少幀動畫圖片資源的使用。
利用混淆刪除無用代碼,減少dex文件大小。

3、響應時間優化

對用戶來說,響應時間自然越短越好。響應時間越短,操作也就越順暢。

響應速度包括啟動速度——點擊APP按鈕到APP首頁完全打開的過程盡可能快、頁面響應速度——用戶執行點擊、滑動等操作后,頁面能快速響應。APP不能產生卡頓、更不能出現ANR。

具體優化措施有:

  • 耗時操作應放入子線程進行處理,不能阻塞主線程。

  • SDK等資源應采用懶加載方式,需要時才進行加載,不需要時可不必加載。

  • 線上環境避免打印大量的日志。

  • 使用BitmapFactory.OptioninBitmap變量,來復用舊的Bitmap,避免為新Bitmap多次分配內存以及銷毀舊Bitmap(如果該Bitmap使用頻率高的話)

優化view視圖渲染時間:

①若view視圖比較復雜,可考慮使用ConstraintLayout約束布局,減少視圖渲染的層級。

②若view視圖比較簡單,優化考慮使用LinearLayout水平布局(因為LinearLayout的渲染時間比ConstraintLayout、RelativeLayout都要短)。

③避免過度渲染,如果有多個view的背景重疊在一起,可以考慮去掉底層被覆蓋的view;主題theme可以設置為NoBackground模式。

④若view視圖在需要時才被創建,使用ViewStub控件。

recyclerview列表控件優化:

item view視圖優化,同第4點。

②增加recyclerviewitem緩存數量,將網絡請求的數據緩存,避免二次請求網絡。

③在onBindViewHolder避免執行耗時操作,因為onBindViewHolder是在主線程執行,onBindViewHolder加耗時操作會影響滑動流暢度。

④如果不需要recyclerview的默認動畫,刪除。(如刷新時閃爍的動畫效果)

recyclerview刷新時盡量使用局部刷新,避免全局刷新。

查看view是否過度渲染可在手機開發者模式開啟以下設置:

Android性能優化方案分析

4、內存優化

減少內存的使用,主要是避免創建過多對象占用過多內存、避免內存抖動以及避免內存泄漏。

內存抖動即頻繁地創建和銷毀內存,在這個過程中,垃圾回收器也會頻繁工作,對內存性能造成影響。

內存泄漏即應該被GC回收的內存,由于還在被其他對象引用,導致無法被回收。內存泄漏是比較嚴重的問題,過多的內存泄漏會導致內存溢出,產生OOM的系統錯誤。

造成內存泄漏的原因主要有:

  • 單例類引用Context造成內存泄漏。

  • 非靜態內部類引用外部類造成內存泄漏。

  • handler引用activity造成內存泄漏。

  • 屬性動畫沒有取消,導致view一直被引用造成內存泄漏。

  • 監聽器沒有取消、回調沒有反注冊。

內存優化的措施有:

  • 使用線程池復用線程,因為線程本身會占用相對比較大的內存,復用就可以省下部分內存。

  • onDraw方法內避免創建對象。因為onDraw會被頻繁調用,導致其內部的對象也會被頻繁創建,占用過多內存。

  • 盡量使用StringBuilderStringBuffer拼接字符串,減少String的使用。(因為拼接字符串時,String會創建新的對象,而StringBuilderStringBuffer是在原字符串基礎上拼接)

  • 視圖資源不可見時進行清除,避免占用內存。如Bitmap執行.recycle方法進行清除、對圖片和lottie資源進行銷毀。

針對內存泄漏的問題進行優化:

①單例類應引用ApplicationContext,因為Application的Context的生命周期是和APP一致的,不會造成單例類引用某個activity的context以致該activity無法被回收的問題。

②將非靜態內部類改為靜態內部類,這樣就不會引用外部類。

handler:a.handler使用結束時調用removeCallbacksAndMessages(null)清除隊列;b.靜態內部類+弱引用方式可避免內存泄漏。

static class SafeHandler extends Handler { 
     WeakReference<MainActivity> activity; 
     public SafeHandler(MainActivity mainActivity) { 
             activity = new WeakReference<MainActivity>(mainActivity); 
    } 
    @Override public void handleMessage(Message msg) { } 
}

④屬性動畫、監聽器使用結束應及時取消,廣播或其他一些外部庫的回調應該及時反注冊。

5、CPU優化

CPU的作用是計算處理信息、運行程序,因此優化的方向就是減少CPU計算的工作,提升CPU的計算效率。

具體的優化措施有:

  • 避免主線程執行耗時任務,耗時任務在子線程異步執行。

  • 避免在onDraw方法里執行大量耗時操作。

  • 暫時不需要用到的信息進行懶加載、延遲初始化。

6、耗電量優化

優化的措施有:

  • 避免頻繁進行網絡請求。

  • 避免任務被頻繁執行,可以等任務形成一定數量時,再一起執行。

  • 避免應用頻繁喚醒屏幕。(頻繁喚醒屏幕會導致系統無法進入休眠,耗電量大)

保證性能指標不下降一直是開發過程中的重中之重,如果由于開發新功能導致出現卡頓、機身發熱耗電量猛增、內存增大等性能問題,那樣反而會流失用戶,得不償失。因此關注性能也是RD們的一項隱形工作。希望這篇文章能對大家有所幫助。

“Android性能優化方案分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华坪县| 白河县| 称多县| 涟水县| 洪江市| 农安县| 威信县| 灵川县| 泾源县| 祁门县| 灵台县| 墨竹工卡县| 石门县| 察雅县| 报价| 青浦区| 理塘县| 淮安市| 当阳市| 平顺县| 文登市| 大石桥市| 泾川县| 河津市| 南宁市| 新密市| 开远市| 赤壁市| 康保县| 轮台县| 隆安县| 石城县| 和田市| 德江县| 崇明县| 白水县| 菏泽市| 安宁市| 乌拉特前旗| 彰化县| 石家庄市|