android API 7+中有什么方法可以报告对HttpEntity.getContent()的调用进度?

就我而言,我正在响应流中获取图像,因此传输可能需要一段时间。我想随传输进度更新样式设置为ProgressDialogSTYLE_HORIZONTAL

有什么办法吗?

谢谢!

最佳答案

您是否尝试过HttpEntity.getContentLength()来帮助您确定文件的大小?如果将其与AsyncTask的onProgressUpdate()结合使用,则应该能够实现。

看看这个链接

Download a file with Android, and showing the progress in a ProgressDialog

它几乎具有您要查找的内容。它使用urlConnection获取InputStream,因此您需要对其进行调整以使用HttpEntity。所以也许您会有这样的事情。

@Override
protected String doInBackground(String... aurl) {
    int count;
    long contentLength = <yourHttpEntity>.getContentLength();
    InputStream input = new BufferedInputStream(<yourHttpEntity>.getContent());
    OutputStream output = new FileOutputStream("/sdcard/your_photo.jpg");

    byte data[] = new byte[1024];

    long total = 0;
    while ((count = input.read(data)) != -1) {
        total += count;
        publishProgress(""+(int)((total*100)/contentLength));
        output.write(data, 0, count);
    }

    output.flush();
    output.close();
    input.close();
}


并在onProgressUpdate中更新对话框。

08-24 16:41