AsyncTask bloqueia o thread da interface do usuário e mostra a barra de progresso com atraso
O My AsyncTask está bloqueando o elemento do botão de bloqueio durante o download da imagem e a caixa de diálogo de progresso é exibida com atraso - é exibida por um tempo antes da imagem ser exibida, mas o download leva muito tempo e o botão é bloqueado (laranja) e a caixa de diálogo não é exibid
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();
}
}
No ouvinte de botão, basta chamar a função de download, o parâmetro progress é porque eu tenho um círculo de barras de progresso no imageview - a caixa de diálogo é apenas para teste, para descobrir por que existe o atraso e o bloqueio. Em outro aplicativo, eu uso o runable e o thread e o elemento não estão bloqueados, mas nos tutoriais o AsyncTask é mencionado como melhor solução para iss