Implémenter une AsyncTask sous Android
Note
Une AsyncTask est ce qu'on appelle un UI Thread.
Cela permet d'effectuer un traitement en arrière plan sur une application Android sans ralentir la navigation, et de mettre à jour
l'interface de l'application en fin de traitement.
Par exemple: je veux afficher dans une activité une liste de personnes contenue dans une base de données.
L'asyncTask a alors toute son utilité:
Code source
Comment appeler et exécuter une AsyncTask:
AsyncTaskExample asyncTaskExample = new AsyncTaskExample(NomActivité.this); asyncTaskExample.execute();
Code générique d'une AsyncTask:
package packagename; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; /** * Exemple d'AsynTask générique. * @author François http://www.francoiscolin.fr/ * */ public class AsyncTaskExample extends AsyncTask<Void, Void, Boolean> { // On a besoin du contexte pour replacer l'AsyncTask private Context context; // On récupère l'activité d'appel, au cas où besoin dans le traitement private Activity activity; /** * Constructeur de l'asyncTask. * @param context */ public AsyncTaskExample(Activity activity) { this.context = activity.getApplicationContext(); this.activity = activity; } @Override protected void onPreExecute() { super.onPreExecute(); /* * Cette fonction contiendra le code exécuté au préalable, par exemple: * -Affichage d'une ProgressBar * =rond qui tourne pour indiquer une attente * =Barre de progression * -... */ } @Override protected Boolean doInBackground(Void... arg0) { return null; /* * Ici, le code qui doit être exécuté dans l'AsyncTask, par exemple: * -Une requête de base de données * -Un appel à un Web Service * -... */ } @Override protected void onPostExecute(final Boolean success) { /* * Ici, le code exécuté une fois le traitement terminé, par exemple: * -Mise à jour de l'affichage * -Affichage d'une pop-up indiquant la fin du traitement * -Désactivation de la ProgressBar * -... */ } @Override protected void onCancelled() { } }