android API 7+中有什么方法可以报告对HttpEntity.getContent()
的调用进度?
就我而言,我正在响应流中获取图像,因此传输可能需要一段时间。我想随传输进度更新样式设置为ProgressDialog
的STYLE_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中更新对话框。