對技術從業者而言,很多時候時候不是不知道怎麼做,而是不知道做什麼?今天小編收集了一些關於如何對Android應用進行優化的經驗,共計八個維度.
1.佈局最佳化
Android系統每個16ms發出VSYNC訊號,觸發對UI的渲染,要想達到介面流暢,必須實現60fps,也就意味著大多數的操作必須在16ms完成.
除了上面界面過於復雜導致渲染不能及時完成之外,還存在過度繪製問題.所謂過度繪製就是某個像素在同一幀的時間內被繪製多次.在多層次的UI介面中,如果不可見的UI也在進行繪製,那麼這些重合區域的像素就會被繪製多次,從而浪費大量的CPU和GPU資源.過度繪製也發生在背景重疊的情況下,例如Layout中有自己的背景,同時子View中又有自己的背景.
使用HierarchyViewer來查找Activity中的佈局是否過於複雜
在開發者選項中開啟Show GPU Overdraw選項進行觀察是否存在過度繪製
##為什麼?#2.記憶體最佳化
合理的使用多進程,例如像音樂播放器類別,可以分為主進程和播放進程
使用非同步隊列時考慮有界隊列
如果你能明確知道HashMap的大小,那就再初始化時為其製定容量
3.電力最佳化
#電量是行動裝置非常寶貴的資源,身為開發者,有必要為使用者著想,減少電量的消耗.調查顯示通常只有30%左右的電量是被程式核心的功能所消耗,比如界面渲染,剩下的70%則是被上報資料,位置更新,後台通知所消耗.
手機選項中透過檢視APP的電量消耗的統計數據
使用Battery Historian Tool來查看詳細的電量消耗
4.網路最佳化
#為什麼?5.啟動最佳化
使用adb shell am start -W [packageName]/[packageName.MainActivity]
測量冷啟動時間
Activity的onCreate()中減少複雜且耗時的操作
Application的onCreate(),attachBaseContext ()中同樣減少複雜和耗時的操作,但是對於許多App在此處會執行大量組件和服務的初始化操作,如果可能考慮並行初始化
提供自訂啟動視窗,例如將一張圖片透過設定主題的方式顯示為啟動視窗.
最佳化佈局
##6.體積最佳化
#使用Android Lint檢查沒有使用的資源
7.效能最佳化7.效能最佳化
##如何最佳化?
##任務並行化,對可能的任務進行並行操作,多藉助執行緒池而非直接使用執行緒
如何需要序列化資料,優先考慮Android自身提供的而非Java提供的Serializable
#選擇適當的資料結構,明確List/Set/Map/Stack操作的複雜度
使用Android提供更有效率的容器,例如使用ArrayMap來代替HashMap,此外還是有SparseBoolMap,SparseIntMap,SparseLongMap
使用靜態常數代替Enum類型,可以減少至少兩倍的記憶體消耗
使用物件池技術,例如提供想String一樣的物件池
使用快取技術
#字串拼接操作有限使用StringBuilder
對相關的演算法和邏輯進行最佳化,減少不必要的流程
由於每個產品的業務並不相同,也就很難有通用的優化方案,這裡又兩個目標值得思考:
如果有可能,串行業務並行化
如果有可能,簡化業務流程.將一大象關進冰箱的方法就是打開冰箱,將大象放進去,最後關閉冰箱。
之所以把業務優化放在最後的根本原因是業務優化的風險較高,需要團隊的整體配合來完成。
Android中圖片有四種顏色格式,分別是
預設的是<span style="font-size:14px;"># ARGB_8888</span>
,其中ARGB分別代表的是透明度,紅色,綠色,藍色,每個值分別用8位元來記錄,也就是一個像素會佔用4byte,共32位元。
而<span style="font-size:14px;">ARGB_4444</span>
和以上很類似,但是每個值分別用4位來記錄,也就是一個像素會佔用2byte,共16位。 <span style="font-size:14px;">RGB_565</span>
則分別用5位元,6位元,5位元來記錄每個值,不存在透明度,每個像素會佔用2byte,共16位元. <span style="font-size:14px;">ALPHA_8</span>
#:此像素只儲存透明度,會佔用1byte,共8位元。
在實際應用中而言,值推薦使用<span style="font-size:14px;">ARGB_8888</span>
#以及<span style="font-size:14px;">RGB_565</span>
#,如果你不需要透明度,那麼就選擇<span style="font-size:14px;">RGB_565</span>
,可以減少一半的記憶體佔用。
【推薦課程:Android影片教學】
以上是對於Android應用優化大全的詳細內容。更多資訊請關注PHP中文網其他相關文章!