Ce qui se passe à l'exécution de AsyncTasks lorsque les changements de l'Activité?
Alors que l'Exploitation du Réseau est en cours d'exécution dans Asynctask, Si l'utilisateur presse le bouton de Retour et passer à une autre activité de ce qui va arriver à Asynctask qui est en cours d'exécution en arrière-plan?
- AsyncTask Processus de Tuer automatiquement par l'OS?
- Async Tâche de compléter l'ensemble de l'opération?
C'est bizarre comment les acceptée réponse ne mentionne rien à propos de ce qui se passe si l'activité est déjà mort.
OriginalL'auteur Hardik Gajera | 2015-06-27
Vous devez vous connecter pour publier un commentaire.
AsyncTask est un résumé Android classe qui aide les applications Android pour gérer les Principaux thread de l'INTERFACE utilisateur de manière efficace. AsyncTask classe nous permet d'effectuer de longue durée des tâches/opérations d'arrière-plan et affiche le résultat sur le thread de l'INTERFACE utilisateur, sans affecter le thread principal.
1. AsyncTask processus sont pas automatiquement tué par le système d'exploitation. AsyncTask les processus s'exécutent en arrière-plan et est responsable pour la finition c'est de l'emploi, en tout cas. Vous pouvez annuler votre AsycnTask en appelant à annuler(vrai) méthode. Cela entraînera des appels à isCancelled() pour renvoyer la valeur true. Après l'invocation de cette méthode, onCancelled(Objet) la méthode est appelée au lieu de onPostExecute() après doInBackground() retourne.
2. Après l'achèvement de l'opération, le thread d'arrière-plan, il s est arrêté. AsyncTask a un onPostExecute() qui est appelé une fois votre travail terminé. Cette méthode est appelée après doInBackground() méthode complète de traitement. Résultat de doInBackground() est passé à cette méthode.
OriginalL'auteur capt.swag
Si vous démarrez une AsyncTask à l'intérieur d'une Activité et vous faites pivoter l'appareil,l'Activité sera détruite et une nouvelle instance sera créée.
De même, si l'utilisateur de naviguer vers une autre activité,activité en cours seront détruits ou aller dans l'activité de fond de la pile et la nouvelle activité ne soit en premier plan.
Mais l'AsyncTask ne mourra pas. Il va continuer à vivre jusqu'à la fin.
Et lorsqu'elle est terminée, l'AsyncTask ne sera pas de mise à jour de l'INTERFACE utilisateur de la nouvelle Activité. En effet, il met à jour l'ancienne instance de l'activité qui n'est plus affiché. Cela peut conduire à une Exception de type java.lang.IllegalArgumentException: la Vue n'est pas attaché à la fenêtre du gestionnaire si vous utilisez, par exemple, findViewById pour récupérer un point de vue à l'intérieur de l'Activité.
N'appelez pas la finition de la vieille activité quand commencer une nouvelle activité.
Dans ce cas, quand je switch de retour à l'ancienne activité à l'aide de l'Intention, j'ai utiliser l'instance existante elle-même ?
Mais en fait, je ne suis pas le
IllegalArgumentException
. Est-il jeter l'exception toujours?peut-être qu'il a été complété.
OriginalL'auteur Giru Bhai
AsyncTask continue à fonctionner et essayer de poster le résultat sur Zombie Activité. Le mieux c'est d'utilisateur AsyncTaskLoader.
OriginalL'auteur Wasim