Android TrafficStats提供错误的号码

时间:2011-03-23 16:35:52

标签: android

我想通过移动网络测量我的HTTP请求传输和接收的数据。我在Android 2.2中找到了TrafficStats API,但是我从中得到的数字似乎太低了。我正在通过3G网络测量真实设备(HTC Desire)。 在请求之前,a计算自启动时间起的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是否适用于任何人?

谢谢, 马丁

2 个答案:

答案 0 :(得分:0)

可能是HTTP堆栈正在压缩您的数据吗?

此外,/sys上的文件不是常识中的实际文件,它们是内核数据的文件接口(您知道,Unix / Linux的'everything is a file'哲学)

答案 1 :(得分:0)

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