62 votes

Différence entre AsyncTask et Thread / Runnable

J'ai une question qui m'énerve. quelqu'un peut-il donner une réponse directe?

Imaginez que je veuille faire quelque chose dans un autre fil, comme aller chercher du contenu gps / location qui, comme recommandé dans les documents SDK, doit utiliser un fil en arrière-plan. alors voici la question, quelle est la différence entre faire / créer un fil en arrière-plan via AsyncTask et "Thread thread1 = new Thread (nouveau Runnable () ... puis implémenter run ()"?

51voto

The New Idiot Points 23130

AsyncTask est une classe utilitaire pour faire des travaux sur un nouveau thread et d'utiliser les résultats sur le fil à partir de laquelle il m'a appelé (généralement le thread d'INTERFACE utilisateur) lorsque vous avez terminé. C'est juste un wrapper qui utilise un couple de runnables mais les poignées de toutes les subtilités de la création du thread et de la manipulation de messagerie entre les threads.

AsyncTask permet une utilisation facile et de le thread d'INTERFACE utilisateur. Cette classe permet d'effectuer des opérations d'arrière-plan et publier les résultats sur le thread de l'INTERFACE utilisateur sans avoir à manipuler les threads et/ou les gestionnaires.

AsyncTask est conçu pour être une aide de la classe autour de Thread et son maître et ne constitue pas un générique de filetage cadre. AsyncTasks devrait idéalement être utilisé pour les opérations de courte durée (quelques secondes tout au plus.) Si vous avez besoin de garder les threads en cours d'exécution pour de longues périodes de temps, il est fortement recommandé que vous utilisez les différentes Api fournies par java.util.simultanées pacakge comme Exécuteur testamentaire, ThreadPoolExecutor et FutureTask.

Une tâche asynchrone est défini par un calcul qui s'exécute sur un thread d'arrière-plan et dont le résultat est publié sur le thread d'INTERFACE utilisateur. Une tâche asynchrone est défini par 3 types génériques, appelés Params, le Progrès et la Raison, et de 4 étapes, appelé onPreExecute, doInBackground, onProgressUpdate et onPostExecute.

L' Exécutable de l'interface est au cœur de Java threading. L'Exécutable de l'interface doit être implémentée par une classe dont les instances sont destinés à être exécutés par un thread.

Aussi, si je cite un extrait de ce blog:

si vous avez besoin de codage SIMPLE d'utilisation AsyncTask et si vous avez besoin de VITESSE traditionnels Fil de java.

2voto

Lorenzo Points 11

De plus, à compter du lancement d’Android v4.04, vous ne pouvez pas utiliser plus d’une tâche Async à la fois, à moins de perdre la compatibilité avec les versions antérieures. Être conscient!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X