Network Profiler在时间轴上显示实时网络活动,显示发送和接收的数据以及当前连接数。这使您可以检查应用程序传输数据的方式和时间,并适当地优化底层代码。要打开Network Profiler,请执行以下步骤:
- 单击View > Tool Windows > Profiler(也可以单击工具栏中的Profile图标)。
- 从Android Profiler工具栏中选择要分析的设备和应用程序进程。如果已通过USB连接设备,但未看到列出的设备,请确保已启用USB调试。
- 单击网络时间线中的任何位置以打开Network Profiler。
要选择时间线的一部分,检查发送和接收的网络请求列表,或查看有关选定文件的详细信息,必须启用高级分析。
为什么要分析应用程序的网络活动
当你的应用程序向网络发出请求时,设备必须使用高能耗的移动或WiFi装置来发送和接收数据包。无线装置不仅使用电力传输数据,而且还使用额外的电力来开启和保持清醒。
使用Network Profiler,您可以查找频繁的、短时间的网络活动峰值,这意味着您的应用程序需要无线装置频繁打开,或者长时间保持清醒以处理许多短时间的请求。对于这种情况,您可以通过批处理网络请求,减少无线装置发送或接收数据的次数,来优化应用程序,以提高电池性能。还可以让无线装置切换到低功耗模式,延长批处理请求之间的间隔,以节省电量。
Network Profiler概述
➊在窗口的顶部,您可以看到事件时间轴。在时间轴上,您可以单击并拖动以选择时间线的一部分来检查流量。
➋在时间轴下方的窗格中,选择以下选项之一以获取有关选定部分期间网络活动的详细信息:
- Connection View:列出在时间轴的选定部分内所有CPU线程发送或接收的文件。对于每个请求,您可以检查大小、类型、状态和传输持续时间。您可以通过单击任何列标题对该列表进行排序。您还可以看到时间轴中选定部分的详细细分,显示每个文件的发送或接收时间。
- Thread View:显示应用程序的每个CPU线程的网络活动。如下图所示,此视图允许您查看每个网络请求由哪已个线程负责。
➌从Connection View或Thread View中,单击请求名称以检查有关发送或接收的数据的详细信息。单击这些标签可查看响应头和正文、请求头和正文或调用堆栈。
在Response和Request标签上,单击View Parsed链接可以显示格式化文本,单击View Source链接可以显示原始文本。
注意:如果您使用的是HttpURLConnection API,除非使用setRequestProperty方法将其包含在代码中,否则不会在Request标签中看到标头,如下面的示例所示。
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 Profiler检测到流量值,但无法识别任何受支持的网络请求,则将收到以下错误消息:
**Network Profiling Data Unavailable:** There is no information for the
network traffic you've selected.
目前,Network Profiler只支持HttpURLConnection和OkHttp库用于网络连接。如果您的应用程序使用其他网络连接库,则可能无法在Network Profiler中查看网络活动。如果您收到此错误消息,但您的应用程序确实使用HTTurpLink或OKHTTP,请报告错误或搜索问题跟踪器,将您的反馈包含在与您的问题相关的现有报告中。您还可以使用这些资源请求对其他库的支持。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。