Dans l'interface utilisateur, pour effectuer un travail de fond, j'ai utilisé un fichier Thread
. Mais comme suggéré par d'autres, j'utilise maintenant AsyncTask
.
Quelle est la principale différence entre a Thread
et an AsyncTask
?
Dans quel scénario, dois-je utiliser un Thread
ou un AsyncTask
?
Réponses:
Pour les tâches de longue durée ou gourmandes en ressources processeur, il existe essentiellement deux façons de le faire: les threads Java et l'AsyncTask natif d'Android.
Aucun des deux n'est nécessairement meilleur que l'autre, mais il est essentiel de savoir quand utiliser chaque appel pour tirer parti des performances du système.
Utilisez AsyncTask pour:
Utilisez les threads Java pour:
Et il existe de nombreuses bonnes ressources sur Internet qui peuvent vous aider:
http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html
la source
AsyncTask
avec son propre planificateur.Si vous utilisez des threads Java, vous devez gérer les exigences suivantes dans votre propre code:
la source
Fil
AsyncTask
la source
Pour plus d'informations, visitez ici
la source
Fil:
Thread
doit être utilisé pour séparer les opérations de longue durée du thread principal afin d'améliorer les performances. Mais il ne peut pas être annulé avec élégance et il ne peut pas gérer les changements de configuration d'Android. Vous ne pouvez pas mettre à jour l'interface utilisateur à partir deThread
.AsyncTask
peut être utilisé pour gérer des éléments de travail d'une durée inférieure à 5 ms. AvecAsyncTask
, vous pouvez mettre à jour l'interface utilisateur contrairement à javaThread
. Mais de nombreuses tâches de longue durée vont étouffer les performances.Vous avez peu d'alternatives supplémentaires aux deux.
HandlerThread / Handler et ThreadPoolExecutor
Reportez-vous à l'article ci-dessous pour plus de détails:
Gestionnaire vs AsyncTask vs Thread
la source