【问题标题】:Android TrafficStats delivering wrong numbersAndroid TrafficStats 提供错误的数字
【发布时间】:2011-03-23 16:35:51
【问题描述】:

我想测量通过移动网络为我的 HTTP 请求传输和接收的数据。我在 Android 2.2 中找到了 TrafficStats API,但我从中得到的数字似乎太低了。我正在通过 3G 网络在真实设备 (HTC Desire) 上进行测量。 在请求之前计算自启动时间以来的 tx/rx 数据,然后执行 GET 请求,然后再次计算 rx/tx 数:

long bytesStart = TrafficStats.getTotalTxBytes() + TrafficStats.getTotalRxBytes();
// execute request (Apache HTTP client)
client.execute(get);
long totalBytesNow = TrafficStats.getTotalTxBytes() + TrafficStats.getTotalRxBytes();
long bytesDiff = totalBytesNow - bytesStart;

对于 bytesDiff,我得到大约 1.5KB 的数字,而它应该是 3.5KB。 totalBytes 数约为 5MB,这似乎是设备运行 10 小时的合理数据量。

我读到here on stackoverflow,数字来自文件,是不是数据没有立即刷新到文件中?或者为什么我的数字总是太低(我检查了服务器上的数据大小,它确实更大)? 这是我的 HTC Desire 设备(HTC 的 Android 2.2)的问题,TrafficStats API 是否适用于任何人?

谢谢, 马丁

【问题讨论】:

    标签: android


    【解决方案1】:

    会不会是 HTTP 堆栈正在压缩您的数据?

    另外,/sys 上的文件并不是通常意义上的实际文件,它们是内核数据的文件接口(你知道,Unix/Linux 的“everything is a file”哲学)

    【讨论】:

    • 是的,数据是压缩传输的,但我检查了设备上不同文件大小的数字并使用 HTTPwatch(均压缩),而来自 TrafficStats 的数字太低了。对,这些不是真正的文件,所以冲洗理论可能会被抛弃;-)
    【解决方案2】:

    好的,我在编码中发现了问题。在“client.execute(get);”之后我只传输了标题等,而不是内容。在评估内容 InputStream 后,数字是正确的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多