iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Mobile Development

Android 性能戰爭:從 Profiler 開始的 30 天優化實錄系列 第 14

# Day 14:【啟動戰役】戰果驗收:數據對比與總結

  • 分享至 

  • xImage
  •  

各位戰士,歡迎來到第十四天的戰場。在過去的一週,我們發起了一場名為「閃電戰」的快速突襲,目標只有一個:攻克應用程式啟動速度這個關鍵要塞。我們從偵查、埋伏、到發動總攻擊,部署了多種戰術。

一場戰爭的勝利,不能只憑感覺。它必須被量化,被記錄,被複盤。今天,就是我們的「戰後復盤會議」。我們將用最客觀的數據來檢視我們的戰功,總結勝利的關鍵,並為下一場更持久的戰爭做好準備。


我們的武器庫回顧

在這場閃電戰中,我們動用了以下核心武器與戰術:

  • Day 8 (偵查): 我們學會了使用 adb 指令這款精密的偵測儀,精準測量冷、溫、熱三種啟動模式的耗時,為我們的優化指明了方向。
  • Day 9 (奇襲): 透過 App Startup 函式庫,我們對 Application.onCreate() 進行了外科手術式的打擊,將非必要的初始化任務延遲或並行處理。
  • Day 10 (佯攻): 我們學會了延遲主畫面非關鍵 UI 的載入,確保第一幀內容能以最快速度呈現給使用者,極大改善了體感速度。
  • Day 11-12 (重砲): Baseline Profiles 是我們最強大的攻城武器。它透過預先編譯 (AOT) 的方式,從根本上繞過了 JIT 編譯的耗時,給予了敵人最沉重的打擊。
  • Day 13 (心戰): SplashScreen API 讓我們在攻下城池後,掛上了優雅的勝利旗幟。它將等待的過程轉化為無縫的品牌體驗,贏得了使用者的心。

勝利的證明:數據會說話

讓我們假設一個「戰前」的場景:一個典型的 App,在 Application 中同步初始化了三個 SDK,並在 MainActivityonCreate 中執行了一些耗時操作。我們使用 Day 8 的 adb 指令在一部中階測試機上進行測量。

測量指令:

# -S: force-stop the app before starting
# -W: wait for the launch to complete
# com.example.app/.MainActivity: your package name and launch activity
adb shell am start-activity -S -W com.example.app/.MainActivity

我們只關注 TotalTime 這個指標,它代表了從啟動到畫面完全呈現的總耗時。

戰果對比表

(注:以上為模擬數據,但真實反映了各項優化所能帶來的典型效果)

數據分析

https://ithelp.ithome.com.tw/upload/images/20250928/20168455xWQAccirnW.png

從上表可以清晰地看到:

  1. 積少成多:每一步優化都有其價值。延遲初始化和延遲 UI 載入為我們爭取了超過 600ms 的時間,這是勝利的基礎。

  2. 關鍵一擊:Baseline Profiles 的投入產生了決定性的戰果,直接將啟動時間縮短了近一半。這證明了從編譯層級進行優化是多麼高效。

  3. 總體勝利:我們成功將一個需要超過 1.5 秒才能啟動的應用,改造成了一個僅需約 0.5 秒就能使用的「快應用」。超過 60% 的性能提升,這是一場毋庸置疑的大勝!

  4. 體驗的飛躍:數據無法完全體現 SplashScreen API 帶來的價值。現在,這 570ms 的等待時間不再是惱人的白畫面,而是一次流暢、專業的品牌展示。

總結:第一場戰役的勝利宣言

指揮官們,應用啟動速度優化戰役至此已大獲全勝。我們不僅學會了單一的技巧,更是建立了一套完整的作戰體系:測量 -> 分解 -> 逐個擊破 -> 編譯優化 -> 體驗收尾。

這套體系將成為我們未來應對所有性能挑戰的指導思想。

但是,戰爭還沒有結束。我們只是贏得了灘頭堡。使用者進入 App 後的體驗同樣重要。滑動列表時的卡頓、頁面切換的延遲,是潛伏在應用內部的更頑固的敵人。

休息片刻,準備好你的武器。從明天開始,我們將轉入一場更為艱苦的 【陣地戰 —— UI 流暢度攻防戰】。我們的目標是消滅所有掉幀 (Jank),確保絲滑流暢的操作體驗!

我們明天見!


上一篇
# Day 13:【啟動戰役】閃屏頁 (Splash Screen) 的最佳實踐
下一篇
# Day 15:【流暢度戰爭】Jank 的元兇:掉幀是如何發生的?
系列文
Android 性能戰爭:從 Profiler 開始的 30 天優化實錄15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言