我的AsyncTask阻止了阻止按钮元素,同时下载图像和进度对话框显示延迟 - 它显示一段时间之后图像显示,但下载需要很长时间,并且按钮被阻止(橙色),对话框不显示。AsyncTask阻止UI线程并显示延迟进度条
public Bitmap download(String url, ProgressBar progressbar) throws InterruptedException, ExecutionException {
BitmapDownloaderTask task = new BitmapDownloaderTask(progressbar);
task.execute(url);
return task.get();
}
class BitmapDownloaderTask extends AsyncTask<String, Void, Bitmap> {
public BitmapDownloaderTask(ProgressBar progressbar) {
}
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(ShowActivity.this);
dialog.setMessage("Loading");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
}
@Override
protected Bitmap doInBackground(String... Params) {
return imageLoader.getBitmap(params[0]);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
dialog.dismiss();
}
}
在按钮监听器,只需调用下载功能,进度参数是因为我在imageview的进度条圈 - 对话框仅用于测试,以发现为什么会出现延迟和块。在另一个应用程序中,我使用可运行的线程和元素不被阻塞,但在教程中提到AsyncTask作为更好的解决方案。
这是做正确的方式,检查此链接:http://www.android-ios-tutorials.com/ 182/show-progressbar-while-download-image-using-asynctask-in-android/ – Houcine 2014-09-16 17:25:16