Android Studio 如何分析网络活动

前面的小节我们学习了如何分析内存活动。本小节学习如何分析网络活动。

1. 为什么应分析网络活动?

当我们的应用向网络发出请求时,设备必须使用高功耗的移动或 WLAN 无线装置来收发数据包。无线装置不仅要消耗电力来传输数据,而且还要消耗额外的电力来开启并且不锁定屏幕。

使用网络性能剖析器( Network Profiler ),我们可以查找频繁出现的短时网络活动峰值,这些峰值意味着,我们的应用要求经常开启无线装置,或要求无线装置长时间不锁定屏幕以处理集中出现的大量短时请求。这种模式说明我们可以通过批量处理网络请求,减少必须开启无线装置来发送或接收数据的次数,从而优化应用,改善电池性能。这种方式还能让无线装置切换到低功耗模式,延长批量处理请求之间的间隔时间,节省电量。

2. Network Profiler

网络性能剖析器会在时间轴上显示实时网络活动,包括发送和接收的数据以及当前的连接数。这便于我们检查应用传输数据的方式和时间,并适当优化底层代码。

如需打开网络性能剖析器,请按以下步骤操作:

依次点击 View > Tool Windows > Profiler,也可以点击工具栏中的 Profile 图标。

从 Android Profiler 工具栏中选择要分析的设备和应用进程。

点击 NETWORK 时间轴上的任意位置以打开网络性能剖析器。

  1. 事件时间轴;

  2. 网络活动标签页;

  3. 网络数据的详细信息

窗口顶部显示的是事件时间轴。在时间轴上,我们可以点击并拖动以选择时间轴的一部分来检查网络流量。在时间轴下方的窗格中,我们可以选择以下某个标签页,以详细了解时间轴上选定时段内的网络活动:

  • Connection View:列出了在时间轴上选定时段内从我们应用的所有 CPU 线程发送或接收的文件。对于每个请求,我们可以检查大小、类型、状态和传输时长。 我们可以通过点击任意列标题来对此列表排序。我们还会看到时间轴上选定时段的明细数据,从而了解每个文件的发送或接收时间。

  • Thread View:显示应用的每个 CPU 线程的网络活动。 如下图所示,我们可以在此视图中检查应用的哪些线程负责每个网络请求。

Connection ViewThread View 中,点击请求名称可检查有关已发送或已接收数据的详细信息。点击各个标签页可查看响应标头和正文、请求标头和正文或调用堆栈。

ResponseRequest 标签页中,点击 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 仅支持 HttpURLConnectionOkHttp 网络连接库。如果我们的应用使用的是其他网络连接库,我们可能无法在网络性能剖析器中查看网络活动。

4. 小结

本节课程我们主要学习了如何分析网络活动。本节课程的重点如下:

  • 掌握如何检查网络流量。