9Aug

Que se passe-t-il exactement lorsque vous faites glisser une application Android dans la liste des applications récentes?

Lorsque vous supprimez une application de votre liste d'applications Android en cours d'exécution, que se passe-t-il exactement avec l'application et les données? Continuez à lire pendant que nous enquêtons.

Question d'aujourd'hui &La session de réponse nous est offerte par Android Enthusiast, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.

La question

Android Enthusiast lecteur Eldarerathis est curieux de la fonctionnalité de glisser-application qui vous permet de remonter votre liste d'applications en cours d'exécution via le bouton d'accueil, puis les glisser vers la droite, vraisemblablement pour les fermer:

Ice Cream Sandwich ajouté la possibilité de faire glisser les applications hors de la liste, les rejetant ainsi définitivement( et autant que je sache, c'est une fonction vanille, pas un CM / personnalisé ROM).La documentation et les points saillants de la plate-forme ne semblent pas couvrir le fonctionnement sous-le-capot de cette fonctionnalité, mais je suis curieux de savoir ce que le système est réellement en train de faire.

Ajoutant à ma curiosité, j'ai décidé de faire un test rapide: j'ai démarré Music sur une installation CM9, puis je l'ai abandonné.J'ai ensuite vérifié la liste des applications récentes et j'ai vu qu'il était bien là( et dans l'état correct, basé sur la vignette).Je suis ensuite allé dans Paramètres- & gt; Applications et force arrêté l'application Musique, mais il était encore répertorié dans la liste récente, ce qui me laisse croire qu'il n'est pas connecté à des processus persistants en arrière-plan.

Réalisant maintenant que la musique a pu être un mauvais choix, j'ai également testé avec l'application USA Today. Cela présentait fondamentalement le même comportement, et il semblait qu'il était forcé de "relancer" après l'arrêt de la force( ce qui est logique) bien que la vignette dans la liste des applications récentes ne reflète pas cela( en cache, je devine?).

Alors, que se passe-t-il réellement au niveau du système d'exploitation lorsque vous faites glisser une application hors de la liste récente? Est-ce que cela efface simplement les données de l'application à partir de la mémoire vive et des ordures, ce qui détruit l'état sauvegardé?

Que se passe-t-il exactement lorsque vous supprimez l'application de la liste?

Les réponses

Android Enthusiast contributeur Austin Mills offre un aperçu:

Swing applications de la liste des applications récentes est à la vanille, et oui, pas bien documenté.Cela a été le sujet d'une quantité décente de discussion sur divers forums Android. .. le consensus semble être mieux décrit ici dans certains commentaires: que le comportement est similaire à, mais pas exactement la même chose que la fermeture d'une application - en généralne définissez pas le traitement explicite du bouton arrière), c'est la même chose que de revenir assez souvent d'une application à la sortie de celle-ci.

Le lien a plus de détails sur les détails, mais dans l'ensemble, vous pouvez penser à quitter l'application.

Spécifique à l'application Music, je crois qu'il démarre un service, alors que la tâche elle-même( l'application Music / UI) peut être fermée, le service continue à fonctionner en arrière-plan afin que votre musique ne s'arrête pastâche a été effacée pour des raisons de gestion de la mémoire. Cela a peut-être affecté ce que vous avez vu.

Puis, participant au cercle de questions et réponses de la vie, Eldarerathis revint avec quelques recherches de sa part pour compléter la réponse:

J'ai l'impression d'avoir trouvé les termes de recherche magiques qui ont conduit à quelques explications des employés de Google. Plus précisément, j'ai trouvé quelques endroits différents où Dianne Hackborn explique ce qui se passe lorsque vous balayez quelque chose sur la liste récente. Le premier est un commentaire sur l'un de ses posts Google+:

[W] qui se produit spécifiquement lorsque vous balayez une tâche récente:( 1) tue tout arrière-plan ou processus vides de l'application( voir ici ce que cela signifie),et( 2) utilise la nouvelle API pour informer les services de l'application de la tâche en cours de suppression afin qu'elle puisse faire ce qu'elle juge approprié.

Elle note également dans un commentaire de blog:

En fait, supprimer une entrée dans les tâches récentes va tuer tous les processus d'arrière-plan qui existent pour le processus. Cela n'entraîne pas directement l'arrêt des services, mais une API leur permet de découvrir que la tâche a été supprimée afin de décider s'ils veulent que cela signifie qu'ils doivent arrêter. Cela signifie que supprimer la tâche récente d'une application e-mail ne l'empêchera pas de rechercher des e-mails.

Si vous voulez vraiment arrêter complètement une application, vous pouvez appuyer longuement sur les tâches récentes pour accéder à l'info de l'application et appuyer sur la touche stop. L'arrêt de force est une suppression complète de l'application - tous les processus sont arrêtés, tous les services sont arrêtés, toutes les notifications sont supprimées, toutes les alarmes sont supprimées, etc. L'application n'est pas autorisée à redémarrer tant qu'elle n'est pas explicitement demandée.

Donc, il semble que le résumé est que glisser une application hors de la liste va d'abord tuer tous les processus d'arrière-plan pour l'application, puis utiliser onTaskRemoved pour informer l'application que la tâche en arrière-plan a été supprimée.À ce stade, il semble que c'est à l'application de décider ce qui se passe, donc je suppose que techniquement n'est pas une règle absolue sur ce qui se passe à l'application au-delà de ce point.

Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.