网络性能剖析器会在时间轴上显示实时网络活动,包括发送和接收的数据以及当前的连接数。这便于您检查应用传输数据的方式和时间,并适当优化底层代码。
如需打开网络性能剖析器,请按以下步骤操作:
- 依次点击 View > Tool Windows > Profiler(您也可以点击工具栏中的 Profile 图标
)。
- 从 Android Profiler 工具栏中选择要分析的设备和应用进程。如果您已通过 USB 连接设备但系统未列出该设备,请确保您已启用 USB 调试。
- 点击 NETWORK 时间轴上的任意位置以打开网络性能剖析器。
如需选择时间轴的一部分、检查发送的网络请求和接收的响应列表,或查看有关选定文件的详细信息,您必须启用高级性能剖析。
为什么应分析应用的网络 Activity
当您的应用向网络发出请求时,设备必须使用高功耗的移动或 WLAN 无线装置来收发数据包。无线装置不仅要消耗电力来传输数据,而且还要消耗额外的电力来开启并且不锁定屏幕。
使用网络性能剖析器,您可以查找频繁出现的短时网络活动峰值,这些峰值意味着,您的应用要求经常开启无线装置,或要求无线装置长时间不锁定屏幕以处理集中出现的大量短时请求。这种模式说明您可以通过批量处理网络请求,减少必须开启无线装置来发送或接收数据的次数,从而优化应用,改善电池性能。这种方式还能让无线装置切换到低功耗模式,延长批量处理请求之间的间隔时间,节省电量。
如需详细了解优化应用网络 Activity 的相关技巧,请阅读减少网络耗电量。
网络性能剖析器概览
窗口顶部显示事件时间轴。在时间轴 (1) 上,您可以点击并拖动以选择时间轴的一部分来检查网络流量。
图 1. 网络性能剖析器窗口
在时间轴下方的窗格 (2) 中,您可以选择以下某个标签页,以详细了解时间轴上选定时段内的网络活动:
- Connection View:列出了在时间轴上选定时段内从您应用的所有 CPU 线程发送或接收的文件。对于每个请求,您可以检查大小、类型、状态和传输时长。 您可以通过点击任意列标题来对此列表排序。您还会看到时间轴上选定时段的明细数据,从而了解每个文件的发送或接收时间。
- Thread View:显示您应用的每个 CPU 线程的网络活动。
如图 2 所示,您可以在此视图中检查各网络请求由应用的哪些线程负责。
图 2. 在 Thread View 中检查应用线程的网络请求
从 Connection View 或 Thread View 中点击请求名称,可检查有关已发送或已接收数据的详细信息 (3)。点击各个标签页可查看响应标头和正文、请求标头和正文或调用堆栈。
在 Response 和 Request 标签页中,点击 View Parsed 链接可显示格式化文本,点击 View Source 链接可显示原始文本。
图 3. 通过点击相应链接在原始文本(左侧)和格式化文本(右侧)之间切换
URL url = new URL(MY_URL_EN);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity");
排查网络连接问题
如果网络性能剖析器检测到流量值,但无法识别任何受支持的网络请求,您会收到以下错误消息:
**Network Profiling Data Unavailable:** There is no information for the
network traffic you've selected.
目前,网络性能剖析器仅支持 HttpURLConnection
和 OkHttp
网络连接库。如果您的应用使用的是其他网络连接库,您可能无法在网络性能剖析器中查看网络活动。如果您收到了这条错误消息,但您的应用使用的确实是 HttpURLConnection
或 OkHttp
,请报告错误或搜索问题跟踪器,在与您的问题有关的现有报告中加入您的反馈。您还可以使用这些资源来请求对其他库的支持。