Android優化六:性能優化

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,349評論 25 708
  • HereAndroid的內存優化是性能優化中很重要的一部分,而避免OOM又是內存優化中比較核心的一點。這是一篇關于...
    HarryXR閱讀 3,849評論 1 24
  • 本文轉載來源 http://www.csdn.net/article/2015-09-18/2825737/1 (...
    yoosir閱讀 1,136評論 0 5
  • 我和先生去西裝店里試禮服,這大概是我第一次看見他“西裝革履”的樣子,第一次看見他穿上了雄性世界最標準的戰袍,第一次...
    邢小樾閱讀 568評論 0 0
  • 又過了一年,從小時候的滿懷期待,到如今的不知所往,除了春晚,鞭炮,劉德華的恭喜發財,依舊還能找到過年的味道,已經不...
    悠悠不大愛說話閱讀 265評論 1 2