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 :
Laravel et Symfony sont deux frameworks PHP très populaires pour le développement d'applications web. Lorsque l'on envisage une utilisation en mode API, ces frameworks offrent des approches variées dans la gestion des endpoints, controllers, services, répositories et ORM (Object-Relational Mapping). Mais quels sont les différences fondamentales entre Laravel et Symfony sur ces aspects spécifiques ? C'est ce que nous allons découvrir dans cet article !
Découvrez la planche #39 !
Application web : nous comparons les technologies Java et PHP