android效能優化在實際開發中會經常應用到,當專案越來越龐大時,效能優化就顯得更加重要,寫出高效能優化**不但需要豐富的經驗,而且還需要了解其原理,這樣才有助於我們寫出高效能的**,今天我們來總結一下日常開發中常用效能優化方案,看看你都熟悉哪些。
android
效能優化包括:布局優化、繪製優化、記憶體洩漏優化、響應速度優化、listview
優化、bitmap
優化、執行緒優化等。
布局優化
儘量減少布局層級,relativelayout
比linearlayout
的效能差,relativelayout
的效能優於巢狀布局,布局優化的另外乙個手段就是採用、
標籤和
viewstub
,標籤主要用於布局重用,
標籤一般和
標籤去配合使用,它可以降低減少布局的層級,而
viewstub
則提供了按需載入的功能,當需要時才會將viewstub
中的布局載入到記憶體中,這提高了程式的初始化效率。
繪製優化
繪製優化指view的ondraw
方法要避免執行大量的操作,這主要體現在兩個方面:
(1)ondraw
方法中不要建立新的區域性物件,因為ondraw
方法可能被頻繁的呼叫,這樣一瞬間會產生大量的臨時物件,這些物件不僅占用了過多的記憶體,而且還會導致系統頻繁的gc
,降低了程式的執行效率。
(2)ondraw
方法中不要執行耗時任務,也不能執行成千上萬次的迴圈操作,大量的迴圈十分搶占cpu
的時間片,這會造成view
的繪製過程不流暢。
記憶體洩漏優化
記憶體洩漏優化分為兩個方面:
(1)避免寫出記憶體洩漏的**、
(2)通過分析工具,比如mat來找出潛在的記憶體洩漏繼而解決。
記憶體洩漏場景:
(1)靜態變數導致的記憶體洩漏
(2)單例模式導致的記憶體洩漏
(3)屬性動畫導致的內訓洩漏:屬性動畫中有一種無限迴圈的動畫,它持有activity
中view
的引用,而view
又持有activity
,這樣就導致activity
已經不顯示了,但是仍然銷毀不掉,解決方案就是在activity
的ondestroy()
方法中將動畫停止。
響應速度優化
避免在主線程中去做耗時操作,activity
如果5s沒有響應,則會出現anr
,broadcastreceiver
如果
10s還未執行完操作也會出現anr
。
listview和bitmap優化
listview
優化主要分為三個方面:
(1)使用viewholder
並避免在getview
方法中執行耗時操作
(2)根據列表的滑動狀態來控制任務的執行頻率,比如當列表快速滑動時不適合開啟大量的非同步任務,
(3)使用硬體加速來使listview
的滑動更加流暢
bitmap
優化:
主要是通過bitmapfactory.options
來根據需要對進行取樣,取樣的過程主要使用到了bitmapfactory.options
來根據需要對進行取樣,取樣的過程主要使用到了bitmapfactory.options
的insamplesize
引數
執行緒優化
執行緒優化的思想是採用執行緒池,避免程式中存在大量的thread
。執行緒池可以重用內部的執行緒,從而避免了執行緒的建立和銷毀帶來的效能開銷,同時執行緒池可以有效的控制線程的最大併發數,避免了大量執行緒因互相搶占系統資源而導致阻塞現象的發生。因此在實際開發中應盡量採用執行緒池,而不是每次都要建立乙個thread
物件。
一些效能優化的建議
(1)避免建立過多的物件
(2)不要過多的使用列舉型別,列舉占用的記憶體空間比整型要大
(3)常量請使用static final
來修飾
(4)使用一些android
也有的資料結構,如sparsearray
和pair
(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...