dumpsys netstats detail 输出解释netd的app的网络流量统计
dumpsys netstats detail 输出解释
重启后,数据会清零,从新统计
UID tag stats:
Pending bytes: 27977
History since boot:
ident=[{type=9, ratType=COMBINED, metered=true, defaultNetwork=true, oemManaged=OEM_NONE, subId=-1}] uid=1000 set=DEFAULT tag=0xffffff82
NetworkStatsHistory: bucketDuration=7200
st=1773705600 rb=0 rp=0 tb=60 tp=1 op=0
ident=[{type=9, ratType=COMBINED, metered=true, defaultNetwork=true, oemManaged=OEM_NONE, subId=-1}] uid=1000 set=FOREGROUND tag=0xffffff41
整体结构
这是Android系统的网络统计信息,特别是关于UID和tag级别的网络使用情况。
详细字段解释
基本信息
- Pending bytes: 27977- 待处理的网络字节数,可能是尚未计入统计的临时数据
历史记录 (History since boot)
每条记录包含以下信息:
1. ident 字段
ident=[{type=9, ratType=COMBINED, metered=true, defaultNetwork=true, oemManaged=OEM_NONE, subId=-1}]- type=9- 网络类型,9通常表示WIFI
- ratType=COMBINED- 无线接入技术类型,COMBINED表示综合统计
- metered=true- 网络是否计量(可能产生费用)
- defaultNetwork=true- 是否为默认网络
- **oemManaged=OEM_NON
2. 其他核心字段
- uid=1000- 用户ID,1000通常是系统UID
- set=DEFAULT或set=FOREGROUND- 网络使用类别:
- DEFAULT: 默认类别(后台)
- FOREGROUND: 前台类别(活跃应用)
- tag=0xffffff82- 网络流量标签,用于区分不同类型的网络流量
3. 网络统计历史 (NetworkStatsHistory)
- bucketDuration=7200- 统计桶的持续时间,单位为秒(7200秒=2小时)
- st=1773705600- 时间戳,从1970年1月1日开始的秒数
- rb=0- 接收的字节数
- rp=0- 接收的数据包数
- tb=60- 发送的字节数
- tp=1- 发送的数据包数
- op=0- 其他操作数
命令 显示的是什么
dumpsys netstats mSinceBoot,只到本次启动
dumpsys netstats --full getOrLoadCompleteLocked(),会把磁盘里的 90 天历史读出来一并打印
看磁盘文件(甚至跨重启离线分析):
adb shell ls -l /data/misc/apexdata/com.android.tethering/netstats/
然后把 uid_tag.bin、uid_tag.<时间戳> 系列拉出来用 AOSP 的 NetworkStatsCollection.readLegacyUid() / read() 解析(车机/IVI 项目里很常用,可以脚本化做月度报表)。
com.music 的数据,流量未实时更新。原因是 :queryDetailsForUidTag 读的是 NetworkStatsService 持久化到 /data/system/netstats/uid_tag.bin 的 bucket,而当前正在累积的活动 bucket 只在 NetworkStatsRecorder 的内存里,要等到 rotate(默认 2h)或shutdown 才落盘。dumpsys netstats 直接读内存所以能看到,querySummary/queryDetails 走 binder → 读已落盘文件就缺最后一桶。
如果想要实时 读取最新流量,需要 在 getTrafficByUidTagState 查询前调一次 forceUpdate
