使用Android Network Profiler

Network Profiler在时间轴上显示实时网络活动,显示发送和接收的数据以及当前连接数。这使您可以检查应用程序传输数据的方式和时间,并适当地优化底层代码。要打开Network Profiler,请执行以下步骤:

  1. 单击View > Tool Windows > Profiler(也可以单击工具栏中的Profile图标)。
  2. 从Android Profiler工具栏中选择要分析的设备和应用程序进程。如果已通过USB连接设备,但未看到列出的设备,请确保已启用USB调试。
  3. 单击网络时间线中的任何位置以打开Network Profiler。

要选择时间线的一部分,检查发送和接收的网络请求列表,或查看有关选定文件的详细信息,必须启用高级分析。

为什么要分析应用程序的网络活动

当你的应用程序向网络发出请求时,设备必须使用高能耗的移动或WiFi装置来发送和接收数据包。无线装置不仅使用电力传输数据,而且还使用额外的电力来开启和保持清醒。

使用Network Profiler,您可以查找频繁的、短时间的网络活动峰值,这意味着您的应用程序需要无线装置频繁打开,或者长时间保持清醒以处理许多短时间的请求。对于这种情况,您可以通过批处理网络请求,减少无线装置发送或接收数据的次数,来优化应用程序,以提高电池性能。还可以让无线装置切换到低功耗模式,延长批处理请求之间的间隔,以节省电量。

Network Profiler概述

➊在窗口的顶部,您可以看到事件时间轴。在时间轴上,您可以单击并拖动以选择时间线的一部分来检查流量。

networkprofiler_2x.png

➋在时间轴下方的窗格中,选择以下选项之一以获取有关选定部分期间网络活动的详细信息:

  • Connection View:列出在时间轴的选定部分内所有CPU线程发送或接收的文件。对于每个请求,您可以检查大小、类型、状态和传输持续时间。您可以通过单击任何列标题对该列表进行排序。您还可以看到时间轴中选定部分的详细细分,显示每个文件的发送或接收时间。
  • Thread View:显示应用程序的每个CPU线程的网络活动。如下图所示,此视图允许您查看每个网络请求由哪已个线程负责。

network_profiler_thread_view-2X.png

➌从Connection ViewThread View中,单击请求名称以检查有关发送或接收的数据的详细信息。单击这些标签可查看响应头和正文、请求头和正文或调用堆栈。

ResponseRequest标签上,单击View Parsed链接可以显示格式化文本,单击View Source链接可以显示原始文本。

network-profiler-text_2X.png

注意:如果您使用的是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,请报告错误或搜索问题跟踪器,将您的反馈包含在与您的问题相关的现有报告中。您还可以使用这些资源请求对其他库的支持。

参考文档:

Android Developers: network profiler

你可能感兴趣的:(android,optimization)