J'ai une application qui utilise beaucoup d'AsyncTasks, le problème que j'ai est qu'une tâche particulièrement importante n'est pas démarrée pendant quelques minutes après que j'appelle exécuter. Si j'utilise ce qui suit pour mes périphériques ICS, cela fonctionne;Android AsyncTask n'étant pas appelé pour les minutes sur ICS
if(Build.VERSION.SDK_INT >= 11)
{
myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, stuff);
}
par opposition à ceci sur pré-ICS;
myTask.execute(stuff);
Je suis conscient que ICS a changé d'exécution de fil à sérialisé, mais je ne peux pas comprendre ce qui retient la file d'attente de fil.
Il y a environ 20 threads listés dans debug dans eclipse, mais j'ai lu que c'est peut-être incorrect car le débogueur a tendance à continuer à afficher ceux qui ne sont pas vraiment là. Comment puis-je déterminer quels threads bloquent la file d'attente sérialisée afin de ne pas avoir à passer de la valeur par défaut sur ICS, et peut-être même améliorer les performances des périphériques pré-ICS qui ne voient pas les problèmes dus à l'exécuteur du pool de threads est le comportement par défaut.
Veuillez ne pas corriger mon anglais britannique en anglais américain, et certainement ne pas ajouter plus d'erreurs typographiques. : D – Hamid
Est-ce que le démarrage dure toujours le même temps ou varie-t-il? – ghostbust555
il est varié, parfois il va s'exécuter instantanément, comme prévu, d'autres je vais devoir attendre quelques minutes. Bien qu'il ne semble pas y avoir d'entre-deux, il s'agit de minutes instantanées ou x (non comptabilisées). – Hamid