Mi AsyncTask bloquea el elemento de bloque de bloqueo mientras se muestra la imagen descargada y el diálogo de progreso se muestra con retraso: muestra por un tiempo antes de mostrar la imagen, pero la descarga tarda mucho tiempo y el botón está bloqueado (naranja) y no se muestra el diálogo.AsyncTask bloquea el subproceso UI y muestra la barra de progreso con demora
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();
}
}
en el botón oyente, simplemente llame a la función de descarga, el parámetro de progreso es porque tengo círculo barra de progreso en imageview - el diálogo es solo para probar, para fundar ¿por qué existe el retraso y el bloque. En otra aplicación, uso runable y thread y element no está bloqueado, pero en tutoriales se menciona AsyncTask como la mejor solución para esto.
esta es la forma correcta de hacerlo, consulte este enlace: http: //www.android-ios-tutorials.com/ 182/show-progressbar-while-downloading-image-using-asynctask-in-android/ – Houcine