在android API 7+中有什么方法我可以报告调用HttpEntity.getContent()
的进度吗?
在我的情况下,我在响应流中获取图像,因此传输可能需要一段时间。我希望将样式设置为ProgressDialog
的{{1}}更新为传输进度。
有什么办法吗?
谢谢!
答案 0 :(得分:2)
您是否尝试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中更新对话框。