//
you're reading...
Android, featured, Java, Programmazione

Android: download di immagini e caricamento in ImageView con thread asincrono

Mi riaggancio al precedente post dove proponevo un frammento di codice che permetteva di creare un oggetto bitmap scaricando una immagine dal web, gestendo anche il caching.

Tuttavia, questa operazione porta via tempo e se la nostra applicazione ha necessità di caricare parecchie immagini in questo modo (penso ad esempio ad una ListView con un buon numero di elementi grafici) la reattività dell’interfaccia potrebbero risentirne pesantemente.

Come fare quindi? Semplicemente far eseguire la procedura di download, caching e caricamento su ImageView ad un thread separato, mentre l’interfaccia dell’applicazione continua a lavorare.

private class ImageLoader {

	    private  final WeakHashMap<ImageView, AsyncTask> assignments  = new WeakHashMap<ImageView, AsyncTask>();

	    public  void setImageAsync(final ImageView imageView, final String imageUrl) {
	        AsyncTask oldTask = assignments.get(imageView);
	        if (oldTask != null) {
	            oldTask.cancel(true);
	        }

	        // prepare to launch a new task to load this new image
	        AsyncTask<String, Integer, Bitmap> newTask = new AsyncTask<String, Integer, Bitmap>() {

	            protected void onPreExecute() {
	                // eventualmente creare una immagine di 'Loading...'
	            }

	            protected Bitmap doInBackground(String... urls) {
	                //il sorgente di downloadImage lo trovate nel post precedente
	                return Utils.downloadImage(imageUrl, null,getContext());
	            }

	            protected void onPostExecute(Bitmap bitmap) {
	                if (bitmap != null) {
	                    imageView.setImageBitmap(bitmap);
	                }
	            }
	        };
	        newTask.execute();
	        assignments.put(imageView, newTask);
	    }

	}

L’utilizzo è molto semplice:

new ImageLoader().setImageAsync(ImageView1, URL_IMMAGINE);

Discussione

Una Risposta to “Android: download di immagini e caricamento in ImageView con thread asincrono”

  1. Зарегестрироволся ошибочно. Удолите меня пожалусто!

    Pubblicato da anatoliy | 28/08/2011, 10:26 pm

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Archivio

Argomenti

Follow

Get every new post delivered to your Inbox.

Join 325 other followers