查看网络使用情况数据

使用命令 adb shell dumpsys netstats detail 提供自设备启动后收集的网络使用情况统计信息。

输入

要查看网络使用情况统计信息,请运行以下命令:

$ adb shell dumpsys netstats detail

输出

报告的一系列信息因 Android 的版本而异,但由以下几个部分组成:

  • 活动接口
  • 活动 UID 接口
  • 开发统计信息
  • Xt 统计信息
  • UID 统计信息(有时也称为“详细的 UID 统计信息”)
  • UID 代码统计信息

活动接口/活动 UID 接口

以下是活动接口和活动 UID 接口部分的输出示例:

Active interfaces:
  iface=wlan0 ident=[{type=WIFI, subType=COMBINED, networkId="GoogleGuest"}]
Active UID interfaces:
  iface=wlan0 ident=[{type=WIFI, subType=COMBINED, networkId="GoogleGuest"}]

此处显示的是整个设备的网络统计信息。在大多数情况下,这两个部分的信息是相同的。

开发统计信息/Xt 统计信息

以下是开发统计信息部分的输出示例:

Dev stats:
  Pending bytes: 170775
  Complete history:
  ident=[[type=MOBILE_HIPRI, subType=COMBINED, subscriberId=311111...]] uid=-1 set=ALL tag=0x0
    NetworkStatsHistory: bucketDuration=3600000
      bucketStart=1406138400000 activeTime=3603995 rxBytes=19467 rxPackets=53 txBytes=7500 txPackets=61 operations=0
      bucketStart=1406142000000 activeTime=20730 rxBytes=25403 rxPackets=66 txBytes=9140 txPackets=74 operations=0
      bucketStart=1406145600000 activeTime=29161 rxBytes=9263 rxPackets=37 txBytes=5180 txPackets=38 operations=0
      bucketStart=1406149200000 activeTime=9054 rxBytes=12387 rxPackets=31 txBytes=4052 txPackets=35 operations=0
  ident=[[type=WIFI, subType=COMBINED, networkId="MySSID"]] uid=-1 set=ALL tag=0x0
    NetworkStatsHistory: bucketDuration=3600000
      bucketStart=1406138400000 activeTime=4811082 rxBytes=335913292 rxPackets=265144 txBytes=9729261 txPackets=117220 operations=0
      bucketStart=1406142000000 activeTime=3513477 rxBytes=1193606876 rxPackets=956855 txBytes=29450792 txPackets=306634 operations=0
      bucketStart=1406145600000 activeTime=3297986 rxBytes=729381849 rxPackets=586396 txBytes=24247211 txPackets=237438 operations=0
      bucketStart=1406149200000 activeTime=3580941 rxBytes=57168575 rxPackets=51610 txBytes=5291167 txPackets=29260 operations=0
  ident=[[type=WIFI, subType=COMBINED, networkId="MySecondSSID"]] uid=-1 set=ALL tag=0x0
    NetworkStatsHistory: bucketDuration=3600000

UID 统计信息

UID stats:
  Pending bytes: 744
  Complete history:
  ident=[[type=MOBILE_SUPL, subType=COMBINED, subscriberId=311111...], [type=MOBILE, subType=COMBINED, subscriberId=311111...]] uid=10007 set=DEFAULT tag=0x0
    NetworkStatsHistory: bucketDuration=7200000
      bucketStart=1406167200000 activeTime=7200000 rxBytes=4666 rxPackets=7 txBytes=1597 txPackets=10 operations=0
  ident=[[type=WIFI, subType=COMBINED, networkId="MySSID"]] uid=10007 set=DEFAULT tag=0x0
    NetworkStatsHistory: bucketDuration=7200000
      bucketStart=1406138400000 activeTime=7200000 rxBytes=17086802 rxPackets=15387 txBytes=1214969 txPackets=8036 operations=28
      bucketStart=1406145600000 activeTime=7200000 rxBytes=2396424 rxPackets=2946 txBytes=464372 txPackets=2609 operations=70
      bucketStart=1406152800000 activeTime=7200000 rxBytes=200907 rxPackets=606 txBytes=187418 txPackets=739 operations=0
      bucketStart=1406160000000 activeTime=7200000 rxBytes=826017 rxPackets=1126 txBytes=267342 txPackets=1175 operations=35

解读结果

要查找应用的 UID,您可以运行以下命令: adb shell dumpsys package <your package name>, 然后查找标有 userId 的行。

在我们的示例中,假设我们要了解应用“com.example.myapp”的网络使用情况,则可以运行以下命令:

$ adb shell dumpsys package com.example.myapp | grep userId

    userId=10007 gids=[3003, 1028, 1015]

在上面的 dumpsys 命令中,我们查找包含 uid = 10007 的行。符合条件的行有两个,第一个表示移动数据连接,第二个表示 WLAN 连接。在每行的下方,可以看到发送和接收的字节数和数据包数,bucket 为两小时时间窗口。

以下是进一步说明:

  • set=DEFAULT 表示前台网络使用情况,set=BACKGROUND 表示后台使用情况,set=ALL 表示上述两类使用情况。
  • tag=0x0 表示与流量关联的套接字代码。
  • rxBytesrxPackets 表示在相应时间间隔内接收的字节数和数据包数。
  • txBytestxPackets 表示在相应时间间隔内发送(传输)的字节数和数据包数。