Un AsyncTask n'est pas lié au cycle de vie de l'activité qui le contient. Ainsi, par exemple, si vous démarrez une tâche AsyncTask dans une activité et que l'utilisateur fait tourner l'appareil, l'activité sera détruite (et une nouvelle instance d'activité sera créée) mais la tâche AsyncTask ne mourra pas mais continuera à vivre jusqu'à ce qu'elle se termine.
Ensuite, lorsque la tâche AsyncTask se termine, plutôt que de mettre à jour l'interface utilisateur de la nouvelle activité, elle met à jour l'ancienne instance de l'activité (c'est-à-dire celle dans laquelle elle a été créée mais qui n'est plus affichée!). Cela peut entraîner une exception (du type java.lang.IllegalArgumentException: vue non attachée au gestionnaire de fenêtres si vous utilisez, par exemple, findViewById pour récupérer une vue à l'intérieur de l'activité).
Il peut également en résulter une fuite de mémoire, car l'AsyncTask conserve une référence à l'Activté, ce qui empêche l'activité d'être récupérée tant que l'AsyncTask reste en vie.
Pour ces raisons, l'utilisation d'AsyncTasks pour des tâches d'arrière-plan de longue durée est généralement une mauvaise idée. Au contraire, pour les tâches d'arrière-plan de longue durée, un mécanisme différent (tel qu'un service) doit être utilisé.