Android常用效能優化方案

2021-08-21 04:30:13 字數 2476 閱讀 4072

android效能優化在實際開發中會經常應用到,當專案越來越龐大時,效能優化就顯得更加重要,寫出高效能優化**不但需要豐富的經驗,而且還需要了解其原理,這樣才有助於我們寫出高效能的**,今天我們來總結一下日常開發中常用效能優化方案,看看你都熟悉哪些。

android效能優化包括:布局優化、繪製優化、記憶體洩漏優化、響應速度優化、listview優化、bitmap優化、執行緒優化等。

布局優化

儘量減少布局層級,relativelayoutlinearlayout的效能差,relativelayout的效能優於巢狀布局,布局優化的另外乙個手段就是採用標籤和viewstub,標籤主要用於布局重用,標籤一般和標籤去配合使用,它可以降低減少布局的層級,而viewstub則提供了按需載入的功能,當需要時才會將viewstub中的布局載入到記憶體中,這提高了程式的初始化效率。

繪製優化

繪製優化指view的ondraw方法要避免執行大量的操作,這主要體現在兩個方面:

(1)ondraw方法中不要建立新的區域性物件,因為ondraw方法可能被頻繁的呼叫,這樣一瞬間會產生大量的臨時物件,這些物件不僅占用了過多的記憶體,而且還會導致系統頻繁的gc,降低了程式的執行效率。

(2)ondraw方法中不要執行耗時任務,也不能執行成千上萬次的迴圈操作,大量的迴圈十分搶占cpu的時間片,這會造成view的繪製過程不流暢。

記憶體洩漏優化

記憶體洩漏優化分為兩個方面:

(1)避免寫出記憶體洩漏的**、

(2)通過分析工具,比如mat來找出潛在的記憶體洩漏繼而解決。

記憶體洩漏場景:

(1)靜態變數導致的記憶體洩漏

(2)單例模式導致的記憶體洩漏

(3)屬性動畫導致的內訓洩漏:屬性動畫中有一種無限迴圈的動畫,它持有activityview的引用,而view又持有activity,這樣就導致activity已經不顯示了,但是仍然銷毀不掉,解決方案就是在activityondestroy()方法中將動畫停止。

響應速度優化

避免在主線程中去做耗時操作,activity如果5s沒有響應,則會出現anr,broadcastreceiver如果

10s還未執行完操作也會出現anr

listview和bitmap優化

listview優化主要分為三個方面:

(1)使用viewholder並避免在getview方法中執行耗時操作

(2)根據列表的滑動狀態來控制任務的執行頻率,比如當列表快速滑動時不適合開啟大量的非同步任務,

(3)使用硬體加速來使listview的滑動更加流暢

bitmap優化:

主要是通過bitmapfactory.options來根據需要對進行取樣,取樣的過程主要使用到了bitmapfactory.options

來根據需要對進行取樣,取樣的過程主要使用到了bitmapfactory.optionsinsamplesize引數

執行緒優化

執行緒優化的思想是採用執行緒池,避免程式中存在大量的thread。執行緒池可以重用內部的執行緒,從而避免了執行緒的建立和銷毀帶來的效能開銷,同時執行緒池可以有效的控制線程的最大併發數,避免了大量執行緒因互相搶占系統資源而導致阻塞現象的發生。因此在實際開發中應盡量採用執行緒池,而不是每次都要建立乙個thread物件。

一些效能優化的建議

(1)避免建立過多的物件

(2)不要過多的使用列舉型別,列舉占用的記憶體空間比整型要大

(3)常量請使用static final來修飾

(4)使用一些android也有的資料結構,如sparsearraypair

(5)適當的使用軟引用和弱引用

(6)採用記憶體快取和磁碟快取

(7)盡量採用靜態內部類,這樣可以避免潛在的由於內部類而導致的記憶體洩漏的問題

Android效能優化方案

android效能優化的方案比較多,在開發過程中,主要考慮從以下幾個方面優化 1.布局優化 2.繪製優化 3.記憶體洩漏優化 4.響應速度優化 5.listview優化 6.bitmap優化 7.執行緒優化 接下來我們從這幾個方面為大家簡單介紹優化方案 大家肯定都知道android中有許多布局,比如...

前端效能優化常用方案

前端開發效能優化方案 減少http請求次數和請求大小 優化 有利於seo 有利於擴充套件維護 有利於減少效能消耗 js 優化的108條建議 雅虎css優化的36條建議 dns及http通訊方式的優化 1.在js中儘量減少閉包的使用 原因 閉包會產生不釋放的棧記憶體 a 迴圈給元素做事件繫結的時候,盡...

Android效能優化

android效能優化 1.http用gzip壓縮,設定連線超時時間和響應超時時間 http請求按照業務需求,分為是否可以快取和不可快取,那麼在無網路的環境中,仍然通過快取的httpresponse瀏覽部分資料,實現離線閱讀。2.listview 效能優化 1 復用convertview 在geti...