在我的应用程序中,我正在下载一个图像文件。我想在下载进度条上显示下载速度。
如何通过AsyncTask
概念实现?
查看代码片段
public static class MyDownloadTask extends AsyncTask<Void, Integer, Void> {
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// receive the published update here
// progressBar.setProgress(values[0]);
}
@Override
protected Void doInBackground(Void... params) {
// publish your download progress here
// publishProgress(10);
return null;
}
}
通过此示例,您可以在进度对话框中设置下载速度
public class AsyncDownload extends AsyncTask<Void, Double, String> {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Speed: " + 0.0);
progressDialog.show();
}
@Override
protected String doInBackground(Void... voids) {
// AsyncDownload
Double speed = 0.0;
// Calculate speed
publishProgress(speed);
return null;
}
@Override
protected void onProgressUpdate(Double... values) {
super.onProgressUpdate(values);
progressDialog.setMessage("Speed " + values[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
}
要计算下载速度,您可以使用此示例测量下载速度Java