Android TrafficStats.getTotalRxBytes() 低于预期

2023-12-01

我正在尝试获取真实的流量统计数据。但是,TrafficStats.getTotalRxBytes() 小于每个已安装应用程序的 TrafficStats.getUidRxBytes() 之和。 我通过每 30 秒运行一次这段代码(在 Wi-Fi 网络上)发现了这一点:

long total = TrafficStats.getTotalRxBytes();
long mobileTotal = TrafficStats.getMobileRxBytes();
long wifiTotal = (total - mobileTotal);
Log.v("SSS", "total=" + total + " mob=" + mobileTotal + " wifi=" + wifiTotal);

ArrayList<Integer> uids = new ArrayList<Integer>();
int cnt = 0;
for (ApplicationInfo appInfo : packageManager.getInstalledApplications(0)) {
  long bytes = TrafficStats.getUidRxBytes(appInfo.uid);
  if (!uids.contains(appInfo.uid)) {
    // few applications can refer to same uid - sum each uid stats only once
    uids.add(appInfo.uid);
    if (bytes > 0) cnt += bytes;
  }
}
Log.v("SSS", "sum traffic stats = " + cnt);

这是在日志中:

12-12 19:43:18.798: V/SSS(4772): total=4245863 mob=0 wifi=4245863
12-12 19:43:19.569: V/SSS(4772): sum traffic stats = 9313461
12-12 19:43:49.628: V/SSS(4772): total=4245915 mob=0 wifi=4245915
12-12 19:43:50.459: V/SSS(4772): sum traffic stats = 9314216
12-12 19:44:20.518: V/SSS(4772): total=4246524 mob=0 wifi=4246524
12-12 19:44:21.439: V/SSS(4772): sum traffic stats = 9320030

总计之间的差异小于总和之间的差异:

9320030 - 9314216 = 5814 bytes // sums of traffic stats by uid
4246524 - 4245915 = 609 bytes // total traffic stats

1)这是为什么? 2) 我如何获得总流量统计数据的正确值 - 我应该只按 uid 求和流量统计数据吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android TrafficStats.getTotalRxBytes() 低于预期 的相关文章

随机推荐

  • 如何使用第一个表中的逗号分隔值从其他表中选择行? [复制]

    这个问题在这里已经有答案了 有没有办法使用第一个表中的逗号分隔值从其他表中选择行 表格1 faculty subject 101 102 104 103 105 表 2 subject code subject 101 subject 1
  • new Date() 依赖于操作系统吗?

    好吧 我正在使用 javascript 通过简单的正则表达式返回用户系统时间的简写时区 如下所示 new RegExp exec new Date toString 0 这在 Mac 下使用 chrome 效果很好 例如我按预期得到 UTC
  • 变量以及它们在 prolog 中的设置和使用方式

    http www csupomona edu jrfisher www prolog tutorial 2 1 html 所以在那个教程中它有 conflict Coloring adjacent X Y color X Color Col
  • 在页面之间发送参数的最佳方式是什么?

    我们在项目中使用 JSF 我对它还很陌生 每个页面都有一个 back bean Java 文件 为了从一个页面移动 重定向 到另一个页面 我需要在重定向之前将所有参数 搜索条件 放入请求范围中 然后在下一页构造函数中检索它 当你的页面深度很
  • 如何在邮件合并中保留谷歌电子表格的格式?

    我想发送一封电子邮件 其中包含谷歌电子表格内容作为带有格式的正文 我参考了here但它仅适用于单元格 A1 我希望它适用于完整的数据范围 如何在发送电子邮件时保留所有格式 你需要使用getRichTextValues获取给定范围内每个单元格
  • 嵌入文档属性的多次更新

    我有以下收藏 Milestones ActualDate null Index 0 Name milestone1 TargetDate ISODate 2011 12 13T22 00 00Z id ObjectId 4ee89ae7e6
  • config.exceptions_app 无法在 Rails 中工作

    我正在尝试为所有 404 和 500 错误呈现自定义错误页面 所以我在ErrorController类中定义了两个方法not found和internal server error class ErrorController lt Appl
  • 在代理处理程序中,如何区分获取属性(var)与调用方法?

    我有以下代码 其中我使用代理对象 代理 来尝试捕获方法调用和属性访问 例子 https jsfiddle net r8j4fzxL 2 function use strict console clear some empty class w
  • Lisp 中的 setq 和 defvar

    我看到实用 Common Lisp uses defvar db nil 用于设置一个全局变量 使用不是可以吗setq为了同样的目的 使用的优点 缺点是什么defvar vs setq 引入变量的方法有多种 DEFVAR and 定义参数介
  • 为什么两个表之间的完全外连接结果中有NULL?

    我试图从两个表中获取唯一值 这两个表都只有一列称为域 DDL create table domains 1 domain varchar create table domains 2 domain varchar DML insert in
  • 使用htaccess将目录传递给GET参数而不重写url

    我想传递 而不是重定向 这样的东西 http www example com 有 可选 传递给脚本http www example com index php http www example com foo 有 可选 传递给脚本http
  • Python 等语言如何克服 C 的整数数据限制?

    使用 C Python 和 Scheme 中的阶乘程序进行一些随机实验 我发现了这个事实 在 C 中 使用 unsigned long long 数据类型 我可以打印的最大阶乘为 65 即 9223372036854775808 即指定的
  • 实施重试例程

    我有以下想法 是否可以在 python 中实现重试例程 这是我所做的一个简单示例 我想要一个更灵活的解决方案 独立于功能 因此 将removeFile 与任何其他函数切换 并摆脱main 中的while 循环 import os impor
  • 显示git中每个分支的最新提交

    有没有办法显示git中每个分支的最新提交 我在 git 中有一个代码库 我已经设置了一段时间了 其中有几个分支用于不同的功能 我需要进去更新 排除一些代码的问题 但是我选择将它们命名得太笼统 现在我不知道我最后在处理哪一个 甚至不知道哪一个
  • 不能直接使用Function.prototype.call

    function f a return a f 1 gt 1 f call null 1 gt 1 Function prototype call f null 1 gt undefined 为什么最后一行返回undefined 我以为它们
  • 批处理脚本列出本地硬盘驱动器,然后在每个驱动器上执行 dir 命令

    我尝试根据这个主题制作一个脚本 用于查找已安装设备的驱动器号的批处理脚本 但并没有真正的成功 这是脚本 SETLOCAL EnableDelayedExpansion for f usebackq tokens 1 i in fsutil
  • 无法通过多处理同时调用多个函数

    我试图弄清楚如何在同一时间多次运行相同的函数 我可以使用基于其他问题的多处理来实现一些东西 但不幸的是它不能按我想要的方式工作 实际上 当我运行它时 我得到类似这样的东西 函数在每个其他函数之后运行 Worker1 0 1 1 1 2 1
  • delphi中的多种形式

    在我的Delphi项目中 我想要一个 设置 按钮 单击该按钮时 会打开第二个表单 我认为这是正确的术语 我本质上想要打开一个新窗口 进行设置 当用户完成更改此新表单上的设置后 我希望单击按钮即可关闭该表单 用户输入的设置也需要能够被第一个
  • UITextView最大高度

    I use a UITextView在我的应用程序中 我根据文本的大小设置它的框架 然而 如果UITextView size height大于 8192 0 文本就会消失 Does UITextView有最大高度吗 EDIT 我很感谢到目前
  • Android TrafficStats.getTotalRxBytes() 低于预期

    我正在尝试获取真实的流量统计数据 但是 TrafficStats getTotalRxBytes 小于每个已安装应用程序的 TrafficStats getUidRxBytes 之和 我通过每 30 秒运行一次这段代码 在 Wi Fi 网络