Les AsyncTask permettent une utilisation correcte et facile du ThreadUI. Cette classe permet d’effectuer des tâches de fond et de publier des résultats sans manipuler des threads et/ou des handlers.
Les AsyncTask permettent une utilisation correcte et facile du ThreadUI. Cette classe permet d’effectuer des tâches de fond et de publier des résultats sans manipuler des threads et/ou des handlers.
Une tâche asynchrone est définie par un calcul qui fonctionne sur un thread en arrière-plan et dont le résultat est publié sur le ThreadUI. Une tâche asynchrone est définie par 3 types génériques, appelés : le paramètre, la progression et le résultat ainsi que 4 étapes, appelées OnPreExecute, doInBackground, onProgressUpdate et onPostExecute.
Idéalement, les AsyncTasks sont utilisées pour des utilisations courtes (quelques secondes au plus). Pour des opérations de longues périodes, il est fortement recommandé d’utiliser les différentes APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. comme Executor, ThreadPoolExecutor et FutureTask.
AsyncTask est une classe abstraite. Pour l’utiliser, il faut donc créer une classe qui en hérite.
class DownloadFilesTask extends AsyncTask<
URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i <
count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
Une fois créée, une tâche est exécutée très simplement:
new DownloadFilesTask().execute(url1, url2, url3);
De cette manière, les tâches sont mises dans une file d’attente et s’exécuteront les unes après les autres.
Pour quelles s’exécutent parallèlement :
new DownloadFilesTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, url1,url2,url3);
Les trois types utilisés par une tâche asynchrone sont les suivants:
Tous les types ne sont pas toujours utilisés par une tâche asynchrone. Pour marquer un type non utilisé, il suffit d’utiliser le type Void:
class MaTache extends AsyncTask<
Void, Void, Void> { ... }
Lorsqu’une tâche asynchrone est exécutée, la tâche passe par 4 étapes:
Pour que cette classe fonctionne correctement, il y a quelques règles à respecter :
On vous a confié la responsabilité d'une application et vous vous demandez quelle est la meilleure manière de tester votre logiciel ? Vous vous dites qu'en 2025, tester une application devrait être plus facile qu'auparavant, qu'il doit exister des bonnes pratiques, et qu'elles sont sûrement appliquées dans toutes les entreprises… sauf la vôtre ? Il est donc temps de faire un point sur les bonnes pratiques de tests logiciels en 2025 !
En Java, pour savoir ce qui peut avoir un impact sur les performances, il est nécessaire de comprendre ce qui se passe lorsqu’on lance un traitement en parallèle avec les streams. C’est l’objet de cet article.
Quelques années après avoir créé ce blog, nous nous sommes rendu compte d’une chose : nous ne nous sommes jamais présentés ! Grossière erreur de notre part… Cependant, « vaut mieux tard que jamais », alors on fait un petit rectificatif pour tenter de se r