Tag Archive | progressdialog

Implémenter correctement un AsyncTask pour alimenter un ListView

home-bugdroidCet article a pour but de vous proposer et de vous expliquer en détail le template que j’utilise pour utiliser les AsyncTask dans mes applications. Cela permet d’effectuer des travaux en tâche de fond sans bloquer l’utilisateur. On s’en sert notamment pour :

  • Effectuer de gros calculs
  • Appeler des services Web sur Internet

Ce template permet de laisser une tâche s’exécuter pendant que l’utilisateur patiente ou fait autre chose (appel téléphonique, lecture de ses mails, SMS, …).

La plupart des articles/tutoriaux que j’ai pu lire sur le sujet liaient fortement l’AsyncTask à l’Activity. Hors, cela pose un problème lorsque l’Activity est détruite ( lors d’une rotation de l’écran, réception d’un appel, …). Il faut souvent recommencer la tâche demandée à zéro car l’AsyncTask est détruite avec l’Activity 👿. C’est pas top d’autant plus qu’on souhaite charger des données en tâche de fond :lol:. J’ai pu en lire d’autre qui proposaient des solutions relativement complexes à mettre en place (pour pas dire des usines à gaz !).

L’idée que je présente ici est de lier l’Asynctask non pas à l’Activity mais à la classe Application présente dans toute les applications Android et qui ne sera pas détruite 😀. Une fois les données chargée l’Activity (ici une ListActivity) sera alertée pour se mettre à jour. J’ai essayé à ce que ce soit le plus simple et le plus clair possible.

Lire la Suite…

AsynsTask & ProgressDialog

 

[Mise à jour 26/01/2013] Cet article vous fournira une solution technique pour implémenter correctement un AsyncTask pour alimenter un ListView en résolvant les problèmes cités dans cet article : Implémenter correctement un AsyncTask pour alimenter un ListView

 

Lorsque l’on commence à travailler avec des AsyncTask, on est parfois amené à publier la progression du travail en cours de la tâche à l’utilisateur. Cela peut se faire, par exemple, à l’aide de ProgressBar ou ProgressDialog.

Lire la Suite…