Android网址下载计算进度?

时间:2013-06-15 13:02:40

标签: android android-progressbar

我做了一个工作正常的下载方法。它需要 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;      
}

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您之后需要解析内容,则至少有两个选项:

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

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