AsyncTask execute() ou executeOnExecutor()?
Quelle est la différence entre l'utilisation de execute()
et executeOnExecuter()
?
-
Comment
execute()
exécuter des tâches par défaut? (en série ou en parallèle?) -
Ce qui devrait être utilisé pour les nouveaux Kits de développement logiciel >16?
-
Est-il une bonne pratique d'utiliser l'exécution en parallèle (
THREAD_POOL_EXECUTOR
) pour les tâches plutôt que de série, même si elle n'a pas d'importance pour l'application ou le fait qui dépend du nombre deAsyncTask
s qui seront exécutées?
- L'exécution en parallèle a été désactivé par défaut dans AsyncTask de l'API d'après Sandwich à la Crème Glacée de la cible. Donc si vous voulez continuer l'exécution en parallèle de votre AsyncTasks, vous devez utiliser
executeOnExecutor
.
Vous devez vous connecter pour publier un commentaire.
Avant de l'API de niveau 11: parallèle.
API de niveau 11: serial.
Dépend de vos besoins. Utilisation
execute()
si vous êtes heureux avec l'exécuteur par défaut. L'utilisation explicite de l'exécuteur testamentaire, si vous n'êtes pas.Async tâches doit être utilisé uniquement pour des laps de temps relativement court backround opérations. Citant
AsyncTask
documentation:Alors que la async tâche est en cours d'exécution, l'exécuteur thread ne peut pas exécuter d'autres tâches. Une série d'exécuteur testamentaire avec un seul exécuteur fil, elle est plus facile à détecter des problèmes lors de vos tâches à exécuter pendant trop longtemps. Sur un parallèle exécuteur de la détection de ces problèmes prend plus simultanée de longue durée d'exécution des tâches.
Par conséquent, si vous avez vraiment besoin de passer à un parallèle exécuteur testamentaire, vous êtes probablement mieux de revoir votre conception.
.execute() - cette fonction horaires de la tâche dans la file d'attente pour un seul thread d'arrière-plan. Signifie que si vous appelez deux AsyncTasks et de l'aide .la méthode execute() de les appeler, ils vont s'exécuter dans une file d'attente(d'abord, puis à la seconde).
.executeOnExecutor() - Si vous voulez l'exécution en parallèle de deux AsyncTasks, vous pouvez utiliser cette méthode pour l'exécution des AsyncTask. Signifie à la fois asyncTasks va exécuter simultanément.
En termes simples: .la méthode execute() crée un thread unique pour l'exécution de asyncTasks, et .executeOnExecuter() la méthode crée thread séparé pour chaque ayncTask.
.exécuter exécute les tâches par défaut dans l'ordre de série.
ÉDITÉ:
Si vous souhaitez utiliser executeOnExecutor (), vous pouvez utiliser ce code:
Avant en NID d'abeille de la méthode execute() exécuter AsynkTask en parallèle.