2

我已经制作了一个可以正常工作的下载方法。它需要 aString url并返回下载InputStream的由XMLPullParser. 现在我想在下载中添加一个进度条。我发现我可以以某种方式使用getContentLength()onHttpURLConnection但之后我不知道如何计算进度条。

这是我的代码:

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;      
}

谢谢!

4

1 回答 1

2

如果您需要在之后解析内容,您有(至少)两个选择:

  • 按照Google 组 answer中的建议,跟踪流中的当前位置。然后,您将获得准确的进度,因为它代表解析和下载进度。

  • 将流下载到临时文件(并显示进度),然后将 FileInputStream 传递给解析器(并在需要时显示更多进度,但与下载相比应该更快,您可以考虑下载为 90%例如,进度和解析为剩余的 10%)。

于 2013-06-15T13:37:28.693 回答