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 :
13 plugins pour vous faciliter la vie sur Gatsby, c'est par ici !
Ansible est une solution qui permet de faire principalement du déploiement automatisé et de la configuration automatisée. Ansible tourne avec Python, Powershell et Ruby et sert à automatiser la gestion des serveurs…
Aujourd’hui, la mobilité est un des principaux investissements IT des entreprises. Et pour cause, l’utilisation des smartphones et des tablettes est de plus en plus répandue. Seulement l’investissement en mobilité des entreprises n’est pas uniquement con