安卓如何通过URL下载并计算进度?

24 浏览
0 Comments

安卓如何通过URL下载并计算进度?

这个问题已经有答案了

如何在Android上下载文件并在ProgressDialog中显示进度

我已经做了一个下载方法,它可以很好地工作。它需要一个String url,并返回处理后的InputStream,该流由XMLPullParser处理。现在我想在下载中添加进度条。我已经找出可以在HttpURLConnection上使用getContentLength(),但我不知道如何计算进度条。

这是我的代码:

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

谢谢!

admin 更改状态以发布 2023年5月21日
0
0 Comments

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

  • 跟踪流中的当前位置,如Google组的回答中建议的那样。这样你就可以获得准确的进度,它代表了解析和下载进度。

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

0