java - 在 Android/Java 上,连接下载了多少字节?

标签 java android inputstream billing urlconnection

我正在编写的 Android 应用程序涉及大量内容下载(想想 podcatcher/RSS)。

我希望能够向用户表明他们已下载了多少字节,以便他们可以决定是否要使用 Wifi。

为此,我找到了一种计算应用读取字节数的方法,方法是将 InputStream 包装在一个简单的 CountingInputStream.

但是,这没有考虑数据包 header 和 HTTP header 等基本内容。更重要的是,它没有考虑内容编码时可能使用的任何压缩。

那么,我的应用程序通过网络下载了多少字节?我对上传的字节数不太感兴趣,但如果知道如何,请不要害羞。

当我将输入流输入 XML PullParser 时,我采用了相当低级的方法。我还需要进行类似的练习,将字节(本例中为图像)直接转储到 SD 卡上。

这是最好的方法吗?我错过了什么?

最佳答案

ufff...我认为这对底层协议(protocol)来说非常透明,因此您无法计算 session 或链路层中使用的所有这些字节,并且运算符(operator)甚至喜欢对那些不以任何方式可见的控制字节进行收费最终用户。他们还计算两个方向的流量(您对服务器的请求也需要一些),所以 - 好问题是:如何测量下载该图片所需的流量/金钱...?

关于java - 在 Android/Java 上,连接下载了多少字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2272936/

相关文章:

java - 从 Java 对象转换为 float

java - 与默认构造函数作斗争,隐式 super 构造函数未定义

java - 输入流和输出流 - 如何区分歧义

java - 将 InputStream 放入 BufferedOutputStream 以上传到 Blob

c# - 为多个消费者读取一次流

java - 合并排序字符串方法java

java - 为什么我必须导入 InvocationTargetException 因为它在 java.lang 中?

java - Telnet Java 套接字测试

Android - 图库应用程序 NullPointerException - OnePlus One

android-3.0-honeycomb - 仅将我自己的应用程序作为 android 的默认应用程序启动