2010-11-19 22 views
0

Je suis en utilisant ce code pour afficher des images severl de l'Internetpourquoi mon application Android devient lente en cours d'exécution?

ImageView iv = new ImageView; 
URL url = new URL(address); 
InputStream content = (InputStream)url.getContent(); 
Drawable d = Drawable.createFromStream(content , "src"); 
iv.setImageDrawable(d) 

mais l'application est devenu lent en cours d'exécution pourquoi ?? la connexion internet est-elle la raison ??? ou parce que je saisis plusieurs flux d'entrée pour afficher chaque image ???

+0

Utilisez-vous des threads pour charger les images? Ils sont utiles lorsque vous devez charger quelque chose sur Internet, car la tâche peut prendre beaucoup de temps. – Javi

Répondre

2

Vous devez créer les InputStream et Drawable.createFromStream (...) de manière asynchrone, en utilisant une tâche AsyncTask ou en utilisant un thread séparé, puis mettre à jour ImageView en utilisant un gestionnaire une fois qu'ils sont terminés. AsyncTask est préférable.

http://developer.android.com/reference/android/os/AsyncTask.html

+0

pouvez-vous me montrer un exemple simple? – Adham

+0

Il y a un exemple dans la page API liée ci-dessus, également sur le blog de développement Android http://android-developers.blogspot.com/2009/05/painless-threading.html – GeekYouUp

+0

Est-ce utile? http://stackoverflow.com/questions/1905399/listitem-lazyload-asynctask-image-display-problem – Adham