Android優化一:提綱
Android優化二:性能檢測
Android優化三:內存優化
Android優化四:App啟動速度優化
Android優化五:布局優化
Android優化六:性能優化
節制的使用Service
如果應用程序需要使用Service來執行后臺任務的話,只有當任務正在執行的時候才應該讓Service運行起來。
當啟動一個Service時,系統會傾向于將這個Service所依賴的進程進行保留,系統可以在LRUcache當中緩存的進程數量也會減少,導致切換程序的時候耗費更多性能。
我們可以使用IntentService,當后臺任務執行結束后會自動停止,避免了Service的內存泄漏。
當界面不可見時釋放內存
當用戶打開了另外一個程序,我們的程序界面已經不可見的時候,我們應當將所有和界面相關的資源進行釋放。
重寫Activity的onTrimMemory()方法,然后在這個方法中監聽TRIM_MEMORY_UI_HIDDEN這個級別,一旦觸發說明用戶離開了程序,此時就可以進行資源釋放操作了。
當內存緊張時釋放內存
onTrimMemory()方法還有很多種其他類型的回調,可以在手機內存降低的時候及時通知我們,我們應該根據回調中傳入的級別來去決定如何釋放應用程序的資源。
避免在Bitmap上浪費內存
讀取一個Bitmap圖片的時候,千萬不要去加載不需要的分辨率。可以壓縮圖片等操作。
HashMap 優化
用 Android Studio 寫代碼時,經常會提示對 HashMap 的警告優化,推舉我們使用 SparseArray 等。
- SparseArray
SparseArray比HashMap更省內存,在某些條件下性能更好,主要是因為它避免了對key的自動裝箱(int轉為Integer類型),它內部則是通過兩個數組來進行數據存儲的,一個存儲key,另外一個存儲value,為了優化性能,它內部對數據還采取了壓縮的方式來表示稀疏數組的數據。
SparseArray只能存儲key為int類型的數據,同時,SparseArray在存儲和讀取數據時候,使用的是二分查找法。
應用場景:數據量不大,最好在千級以內 + key必須為int類型 - ArrayMap
如果key的類型已經確定為int類型,那么使用SparseArray,因為它避免了自動裝箱的過程,如果key為long類型,使用LongSparseArray。
如果key類型為其它的類型,則使用ArrayMap。
部分來自:
From https://mp.weixin.qq.com/s/YVvV3-RUjbqYo-DYY3E6nA