Моя AsyncTask блокирует элемент кнопки блокировки при загрузке изображения, и диалоговое окно прогресса отображается с задержкой - оно отображается некоторое время до отображения изображения, но загрузка занимает много времени, и кнопка заблокирована (оранжевый) и диалоговое окно не отображается.
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();
}
}
В прослушивателе кнопок просто вызовите функцию загрузки, параметр прогресса заключается в том, что у меня есть круг индикатора выполнения в просмотре изображений - диалоговое окно предназначено только для тестирования, чтобы выяснить, почему есть задержка и блокировка. В другом приложении я использую runable, и поток и элемент не блокируются, но в руководствах AsyncTask упоминается как лучшее решение для этого.