mercredi 21 juillet 2010

Comment afficher une liste d’images dans son application Android ?

L’un des premiers problèmes que l’on rencontre lorsque l’on développe une application Android qui utilise des images sur un serveur distant, est de savoir comment gérer leur affichage et leur téléchargement sans ralentir la navigation.

Le blog Android Developers vient de publier un billet, rédigé par Gilles Debunne, expliquant en détails comment procéder. Le principe est d’utiliser le “multithreading” en téléchargeant de manière asynchrone les images pour ne pas ralentir le défilement de la liste, puis d’afficher les images une fois qu’elles sont complètement téléchargées.

Dans la pratique, plusieurs problèmes se posent, par exemple il est inutile de télécharger 2 fois la même image si elle doit être affichée 2 fois dans l’application, il faut aussi pouvoir annuler un téléchargement s’il devient inutile. La démonstration va même plus loin en proposant des bonnes pratiques pour éviter les problèmes de “Garbage Collection” ou pour résoudre des soucis d’affichage lorsque la connexion réseau est faible.

A noter que l’ensemble du code source est disponible sur Google code sous la forme d’une application qui permet de comparer les différentes méthodes (téléchargement synchrone, téléchargement asynchrone sans gestion des annulations, et la méthode correcte). L’application est prévue pour fonctionner sur Froyo, mais les pratiques exposées peuvent facilement être adaptées pour fonctionner sur les terminaux possédant Android 1.5.

Une bonne nouvelle pour les développeurs qui trouveront là un recueil de bonnes pratiques sur un sujet assez complexe et souvent rencontré lors du développement d’applications.

Une dernière précision, le projet ne gère pas encore complètement la mise en cache des images téléchargées, si cela vous intéresse je vous invite à regarder du côté de la librairie open-source Droid-fu, qui permet là encore de gérer le téléchargement des images et qui possède 2 niveaux de cache (physique et mémoire).

Aucun commentaire:

Enregistrer un commentaire