Android 效能優化系列 — 30 Android 效能優化總結

Evan Chen
Oct 15, 2022

--

Photo by Marianna Lutkova on Unsplash

終於來到 Android 效能優化的最後一篇,我們來做個總結。App 的效能很重要,有好的效能才能帶來好的體驗。在 Google IO 2018 有提到給予 1 顆星的的評論,42% 都提到了穩定性與 bug。給予 5 顆星的評論,有 73% 都提到了速度、設計、可用性。

圖片來源:https://www.youtube.com/watch?v=dx6LBaFqEHU

這個系列,主要分為 Layout、記憶體、網路的效能,也分別介紹其監控工具,到最後的實務效能優化。我們就來回顧一下重點。

Layout 的效能

當無法在時間內完成 View 的繪製,使用者就會感到 UI 的延遲,可以透過優化版面配置及減少畫面的重複繪制來提升效能。

優化版面配置:

  • 減少 View 的階層
  • 使用 Include 重用 Layout
  • 使用 Merge 減少 Layout 階層
  • 使用 ViewStub 延遲 View 的載入

減少重複繪製:

  • 移除不必要的背景
  • 減少 Layout 的複雜度
  • 降低透明度

記憶體的優化

記憶體在任何環境都是非常寶貴的資源,在行動裝置上更是如此。Out of memory 及 Memory leak 都是要儘可能避免的。沒有處理好可能就會閃退或是 ANR 。而最常造成 Memory leak 的是錯用 Activity context 與 Application context。使用 Coroutine 也可以減少 Memory leak 發生的機會。

測量

不要只相信自已的眼睛,每個人的感覺可能不一樣。由數據來測量效能是較好的方式。

  • ANR:StrictMode
  • Layout :Layout inspector、檢測 GPU Rending
  • 記憶體:Memory inspector、LeakCanary
  • 網路:Network inspector
  • 線上監控:Firebase Performance、Google play vitals

不過度追求效能

再次強調,我們追求的是品質、是體驗,而不是效能。而影響品質及體驗不單單是效能,程式碼好不好維護都會影響品質。假設有一段程式碼的執行效能很好,可讀性卻很差。我們就要同時衡量這段程式碼提升的效能是否真的對使用者有感,來綜合比較其優缺點。

儘早在手機上測試

儘早在手機上測試 App,而不是在模擬器上。因為在手機測試你更能用手指去感受效能對你的影響。

使用性能差的手機

使用性能差的手機,能測出一些潛在的效能問題。

最後

最後,這個系列希望對大家有幫助,一起來提升 App 的效能,讓你的 App 有更好的品質及使用體驗。

--

--