iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0

各位戰士,歡迎來到第六天的戰場。我們已經成功地在 CPU 和記憶體戰場上建立了防線,但戰爭的勝利不僅僅取決於內部的強大,還依賴於高效、可靠的外部補給線——網路

對於現代 App 來說,幾乎所有的動態內容都來自網路。一次緩慢、龐大或頻繁的網路請求,不僅會讓使用者陷入漫長的等待,還會悄悄地消耗他們寶貴的行動數據和手機電量。今天,我們的任務就是拿起 Network Profiler 這個監聽工具,揪出那些浪費資源的「大胃王」請求。


我們的監聽站:Network Profiler

Network Profiler 是 Android Studio Profiler 套件中的一個強大工具,它能讓你一窺 App 在運行時所有網路活動的究竟。它會以時間線的形式,詳細記錄每一次網路傳輸的發生時間、持續時長、數據大小以及傳輸速率。

打開 Profiler 視窗,點擊 Network 時間線,即可進入 Network Profiler 的詳細視圖。

https://ithelp.ithome.com.tw/upload/images/20250920/20168455rkvP9pIEr5.png

審查你的補給線:如何解讀數據

Network Profiler 的介面主要分為幾個部分:

  1. 時間線 (Timeline):頂部圖表顯示了即時的網路活動。藍色區域代表已接收的數據,綠色區域代表已傳送的數據。你可以透過觀察時間線上的「尖峰」來快速定位到數據傳輸密集的時刻。
  2. 連線視圖 (Connection View):下方列表顯示了在選定時間範圍內的所有網路連線。每一行都代表一次完整的請求-回應週期,包含了大小 (Size)類型 (Type)狀態 (Status)耗時 (Time) 等關鍵情報。
  3. 詳細資訊面板 (Details Pane):當你點擊某個連線時,右側會顯示該次請求的全部細節,包括:
    • Response: 回應的主體內容(例如 JSON、圖片)。
    • Request: 請求的詳細資訊,包括標頭 (Headers)。
    • Call Stack: 發起這次網路請求的程式碼呼叫堆疊。

實戰演練:揪出一個不合理的圖片請求

假設我們的 App 需要顯示一張個人頭像,但開發者不小心從後端請求了一張未經壓縮的 2048x2048 像素高清原圖,而顯示的 ImageView 只有 100x100 像素。

作戰場景模擬:

  1. 運行你的 App,並執行跳轉到個人資料頁面的操作。
  2. 觀察 Network Profiler 的時間線,你會在載入頁面時看到一個明顯的藍色尖峰。
  3. 在時間線上拖曳滑鼠,選中這個尖峰對應的時間範圍。

分析情報:

  1. 在下方的連線視圖中,你會看到一個請求。注意看 Size 這一欄,它的數值可能高達 1.5 MB 或更高,而 Type 則是 PNGJPG
  2. 點擊這個連線,右側的詳細資訊面板會被啟動。
  3. 切換到 Response 標籤頁,你會看到這張圖片的預覽。很明顯,這是一張尺寸巨大、細節過多的圖片,對於一個小小的頭像來說完全是浪費。
  4. 切換到 Call Stack 標籤頁,你可以追溯到是哪一行程式碼(通常是使用 Glide, Picasso, Coil 等圖片載入庫的地方)發起了這次請求。

罪證確鑿! 我們找到了一個典型的性能浪費案例:為了一個小圖示下載了一張大海報。這不僅拖慢了頁面載入速度,還浪費了使用者的行動數據。

解決方案:與後端工程師協商,提供一個縮圖 (Thumbnail) 版本的 API,或者在請求時帶上尺寸參數,讓伺服器動態裁切圖片。


今日總結

今天,我們學會了如何成為一名合格的軍需官,有效地監控 App 的網路補給線。

  • 我們熟悉了 Network Profiler 的基本介面與功能。
  • 我們學會了如何透過分析時間線連線視圖詳細資訊來定位不合理的網路請求。
  • 我們成功揪出了一個浪費資源的「大圖小用」問題。

高效的網路通訊是良好使用者體驗的基石。定期使用 Network Profiler 審查你的 API 請求,確保它們都是必要且高效的。

第一週的偵查與情蒐任務即將進入尾聲。明天,我們將探索 Profiler 的最後一個主要工具——Energy Profiler,學習如何找出那些在背景偷偷消耗手機電量的「耗電元兇」。

我們明天見!


上一篇
# Day 5:【Memory Profiler】LeakCanary:你的自動化洩漏哨兵
下一篇
# Day 7:【Energy Profiler】電量消耗的來源
系列文
Android 性能戰爭:從 Profiler 開始的 30 天優化實錄8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言