Android Studio 如何分析網絡活動
前面的小節我們學習了如何分析內存活動。本小節學習如何分析網絡活動。
1. 為什么應分析網絡活動?
當我們的應用向網絡發出請求時,設備必須使用高功耗的移動或 WLAN 無線裝置來收發數據包。無線裝置不僅要消耗電力來傳輸數據,而且還要消耗額外的電力來開啟并且不鎖定屏幕。
使用網絡性能剖析器( Network Profiler ),我們可以查找頻繁出現的短時網絡活動峰值,這些峰值意味著,我們的應用要求經常開啟無線裝置,或要求無線裝置長時間不鎖定屏幕以處理集中出現的大量短時請求。這種模式說明我們可以通過批量處理網絡請求,減少必須開啟無線裝置來發送或接收數據的次數,從而優化應用,改善電池性能。這種方式還能讓無線裝置切換到低功耗模式,延長批量處理請求之間的間隔時間,節省電量。
2. Network Profiler
網絡性能剖析器會在時間軸上顯示實時網絡活動,包括發送和接收的數據以及當前的連接數。這便于我們檢查應用傳輸數據的方式和時間,并適當優化底層代碼。
如需打開網絡性能剖析器,請按以下步驟操作:
依次點擊 View > Tool Windows > Profiler,也可以點擊工具欄中的 Profile 圖標。
從 Android Profiler 工具欄中選擇要分析的設備和應用進程。
點擊 NETWORK 時間軸上的任意位置以打開網絡性能剖析器。
-
事件時間軸;
-
網絡活動標簽頁;
-
網絡數據的詳細信息
窗口頂部顯示的是事件時間軸。在時間軸上,我們可以點擊并拖動以選擇時間軸的一部分來檢查網絡流量。在時間軸下方的窗格中,我們可以選擇以下某個標簽頁,以詳細了解時間軸上選定時段內的網絡活動:
-
Connection View:列出了在時間軸上選定時段內從我們應用的所有 CPU 線程發送或接收的文件。對于每個請求,我們可以檢查大小、類型、狀態和傳輸時長。 我們可以通過點擊任意列標題來對此列表排序。我們還會看到時間軸上選定時段的明細數據,從而了解每個文件的發送或接收時間。
-
Thread View:顯示應用的每個 CPU 線程的網絡活動。 如下圖所示,我們可以在此視圖中檢查應用的哪些線程負責每個網絡請求。
從 Connection View 或 Thread View 中,點擊請求名稱可檢查有關已發送或已接收數據的詳細信息。點擊各個標簽頁可查看響應標頭和正文、請求標頭和正文或調用堆棧。
在 Response 和 Request 標簽頁中,點擊 View Parsed 鏈接可顯示格式化文本,點擊 View Source 鏈接可顯示原始文本。
Tips:如果我們使用的是 HttpURLConnection API,則不會在 Request 標簽頁中看到標頭,除非我們使用 setRequestProperty 方法將其添加到我們的代碼中,如以下示例所示。
3. 排查網絡連接問題
如果網絡性能剖析器檢測到流量值,但無法識別任何受支持的網絡請求,我們會收到以下錯誤消息:
**Network Profiling Data Unavailable:** There is no information for the network traffic you've selected.
目前,Network Profiler 僅支持 HttpURLConnection 和 OkHttp 網絡連接庫。如果我們的應用使用的是其他網絡連接庫,我們可能無法在網絡性能剖析器中查看網絡活動。
4. 小結
本節課程我們主要學習了如何分析網絡活動。本節課程的重點如下:
- 掌握如何檢查網絡流量。