我做了一个工作正常的下载方法。它需要 String url
并返回已下载的 InputStream
,由 XMLPullParser
处理。现在我想在下载中添加进度条。我已经发现我可以在 getContentLength()
上以某种方式使用 HttpURLConnection
,但我不知道如何在此之后计算进度条。
这是我的代码:
public static InputStream downloadUrl(String urlString) throws IOException {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(25000);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setUseCaches(true);
conn.setRequestProperty("Content-Type", "application/xml; charset=utf-8");
conn.setRequestProperty("Accept", "application/xml");
conn.connect();
int size = conn.getContentLength();
InputStream stream = conn.getInputStream();
//calculate the progress
return stream;
}
谢谢!
答案 0 :(得分:1)
如果您之后需要解析内容,则至少有两个选项:
按照that Google groups answer中的建议,跟踪流中的当前位置。然后,您将获得准确的进度,因为它表示解析和下载进度。
将流下载到临时文件(并显示该进度),然后将FileInputStream传递给解析器(如果需要,还会显示更多进度,但是与下载相比应该很快,你可以考虑下载90%的进度并解析为例如剩余的10%。