pourquoi, comment et quels paramètres sont passés à Asynctask <>, voir les détails ici . Je pense que c'est la meilleure explication.
La documentation Android de Google indique que:
Une tâche asynchrone est définie par 3 types génériques, appelés Params, Progress et Result, et 4 étapes, appelées onPreExecute, doInBackground, onProgressUpdate et onPostExecute.
Types génériques d'AsyncTask:
Les trois types utilisés par une tâche asynchrone sont les suivants:
Params, le type des paramètres envoyés à la tâche lors de l'exécution. Progression, le type des unités de progression publiées lors du calcul d'arrière-plan. Result, le type du résultat du calcul en arrière-plan. Tous les types ne sont pas toujours utilisés par une tâche asynchrone. Pour marquer un type comme inutilisé, utilisez simplement le type Void:
private class MyTask extends AsyncTask<Void, Void, Void> { ... }
Vous pouvez en outre vous référer: http://developer.android.com/reference/android/os/AsyncTask.html
Ou vous pouvez clarifier le rôle d'AsyncTask en vous référant au blog de Sankar-Ganesh
Eh bien, la structure d'une classe AsyncTask typique est la suivante:
private class MyTask extends AsyncTask<X, Y, Z>
protected void onPreExecute(){
}
Cette méthode est exécutée avant de démarrer le nouveau Thread. Il n'y a pas de valeurs d'entrée / sortie, alors initialisez simplement les variables ou tout ce que vous pensez devoir faire.
protected Z doInBackground(X...x){
}
La méthode la plus importante de la classe AsyncTask. Vous devez placer ici tout ce que vous voulez faire en arrière-plan, dans un fil différent du fil principal. Ici, nous avons comme valeur d'entrée un tableau d'objets du type «X» (voyez-vous dans l'en-tête? Nous avons «... étend AsyncTask» Ce sont les TYPES des paramètres d'entrée) et renvoie un objet du type «Z».
protected void onProgressUpdate (Y y) {
} Cette méthode est appelée à l'aide de la méthode publishProgress (y) et elle est généralement utilisée lorsque vous souhaitez afficher une progression ou des informations dans l'écran principal, comme une barre de progression montrant la progression de l'opération que vous effectuez en arrière-plan.
protected void onPostExecute (Z z) {
} Cette méthode est appelée une fois l'opération en arrière-plan effectuée. En tant que paramètre d'entrée, vous recevrez le paramètre de sortie de la méthode doInBackground.
Qu'en est-il des types X, Y et Z?
Comme vous pouvez le déduire de la structure ci-dessus:
X – The type of the input variables value you want to set to the background process. This can be an array of objects.
Y – The type of the objects you are going to enter in the onProgressUpdate method.
Z – The type of the result from the operations you have done in the background process.
Comment appelle-t-on cette tâche à partir d'une classe extérieure? Juste avec les deux lignes suivantes:
MyTask myTask = new MyTask();
myTask.execute(x);
Où x est le paramètre d'entrée de type X.
Une fois que nous avons notre tâche en cours d'exécution, nous pouvons connaître son statut «de l'extérieur». Utilisation de la méthode «getStatus ()».
myTask.getStatus (); et nous pouvons recevoir le statut suivant:
RUNNING - Indique que la tâche est en cours d'exécution.
PENDING - Indique que la tâche n'a pas encore été exécutée.
FINISHED - Indique que onPostExecute (Z) est terminé.
Conseils sur l'utilisation d'AsyncTask
N'appelez pas les méthodes onPreExecute, doInBackground et onPostExecute manuellement. Ceci est fait automatiquement par le système.
Vous ne pouvez pas appeler une AsyncTask dans une autre AsyncTask ou Thread. L'appel de la méthode execute doit être effectué dans le thread d'interface utilisateur.
La méthode onPostExecute est exécutée dans le thread d'interface utilisateur (ici, vous pouvez appeler une autre AsyncTask!).
Les paramètres d'entrée de la tâche peuvent être un tableau d'objets, de cette façon vous pouvez mettre les objets et les types que vous voulez.