android應用的效能優化

2021-07-27 15:24:35 字數 1784 閱讀 8060

一、布局優化

首先,我們說android布局方式包括5種,分別是linearlayout,relativelayout,framelayout,tablelayout及absolutelayout。一般來說,linearlayout和framelayout效能較好,介面繪製效率較高,能用layoutlayout就不要用relativelayout。另外布局層次要盡可能少,也就說巢狀越少繪製效率越高,當使用relativelayout能避免巢狀布局的情況下,我們採用relativelayout的布局方式,相對來說relativelayout的效率要高於linearlayout這樣的巢狀布局。

其次,採用include、merge及viewstub標籤。當應用使用到了多個相同的布局的時候,使用include布局將重複布局包含進來提高效能。merge配合include來使用可以去掉冗餘的根布局。viewstub用在延遲載入的場景中,比如說在網路出錯的情況下載入特定的布局,可以使用setvisibility和inflate函式載入需要的布局。

二、繪製優化

繪製優化顧名思義檢視中的ondraw方法盡可能的執行效率高。要盡量避免新建區域性物件,要盡量避免迴圈操作。android繪製的標準是60fps,意思是說每秒繪製60幀介面才是流暢的,也就是盡量保證程式繪製實現在16ms以內。

三、listview優化

四、bitmap優化

1、bitmapfactory.options().injustdecodebounds 設定成true, 意思是不載入原始只是獲取原始的寬和高。

2、設定取樣率insameplesize,將需要的尺寸大小和原始的尺寸對比得到取樣率,一般取樣率定義為2的指數次方,比如,目標尺寸是100*150,原始尺寸是200*300,則取樣率就是2,也就是寬和高分別縮小1/2,尺寸縮小1/4。

3、injustdecodebounds 設定成false

4、decodefile() /decodestream/decodebytearray 載入到記憶體

五、記憶體洩露優化

記憶體洩露很多情況是由於程式設計師本身寫**不注意導致的,一不小心就容易出現記憶體溢位,程式奔潰的現象。對記憶體洩露的優化尤為重要。列舉以下情況容易導致記憶體洩露:

1、靜態成員變數導致activity例項無法**

2、非靜態內部類或者匿名內部類中引用外部類的成員變數導致外部類activity例項無法**,盡量採用靜態內部類+弱引用的方式加以避免

4、屬性動畫導致的記憶體洩露,屬性動畫在使用完之後記得cancle

六、響應速度優化

應用啟動過程中如果執行耗時操作則很有可能出現黑屏現在,甚至anr。主線程操作了耗時的任務導致程式anr(activity如果在5秒之內無法響應螢幕觸控事件或者按鍵事件),這種情況可以通過查詢data/anr/traces.txt檔案進行anr問題排查

七、執行緒優化

當需要用到大量的執行緒時採用執行緒池,可以大量執行緒的建立和銷毀所帶來的效能的開銷

八、其他優化建議

1、當數量級在千級以內,使用sparearray,longsparearray, arraymap, 代替hashmap

2、使用記憶體快取和磁碟快取

3、盡量少用列舉型別,列舉型別占用記憶體更大

4、常量使用static final型別修飾

5、避免建立過多的物件

6、適當使用軟應用和弱引用

Android應用效能優化

記憶體,ui,電量 1.記憶體 首先簡單介紹一下android系統記憶體管理機制.記憶體共享 預設情況 string vmheapsize systemproperties.get dalvik.vm.heapsize 16m 只有16m.可以通過在device.mk檔案中設定 product pr...

Android應用效能優化

1 anr 2 listview 卡頓,不流暢 3 activity啟動慢 4 動畫不流暢,啟動前卡頓 5 自定義view啟動慢 6 oom 7 資料庫大量操作 8 長時間執行後,程式變慢 1 語言層解決問題,語法上提高效能 2 合理的資料結構和演算法 3 布局優化,布局深度控制 4 工作執行緒與u...

android的效能優化

高效的利用執行緒,在後台取消一些執行緒的操作 最高效的解決辦法是通過開闢子執行緒來進行耗時操作 如 網路請求,資料庫操作或者複雜的計算等 通過asynctask或通過intentservice來建立後台操作。如果選擇使用intentservice,它會在需要的時候通過乙個工作執行緒 intent 來...