Page d'accueil » comment » Que se passe-t-il exactement lorsque vous glissez une application Android dans la liste des applications récentes?

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

    Lorsque vous faites glisser une application de votre liste d'applications Android en cours d'exécution, qu'advient-il exactement de l'application et des données? Continuez à lire pendant que nous enquêtons.

    La séance de questions et réponses d'aujourd'hui nous est offerte par Android Enthusiast, une sous-division de Stack Exchange, un regroupement de sites Web de questions-réponses dirigé par la communauté..

    La question

    Le lecteur d’Enthusiast Android, Eldarerathis, est curieux de connaître la fonctionnalité de glissement d’application qui vous permet d’afficher votre liste d’applications en cours via le bouton principal, puis de les faire glisser vers la droite, probablement pour les fermer:

    La liste des applications récente dans Ice Cream Sandwich a ajouté la possibilité de faire glisser des applications hors de la liste, les supprimant ainsi définitivement (et pour autant que je sache, il s'agit d'une fonction vanille, pas d'une fonction CM / ROM personnalisée). La documentation et les points forts de la plate-forme ne semblent pas couvrir les rouages ​​sous-jacents de cette fonctionnalité, mais je suis curieux de savoir ce que fait réellement le système..

    Ajoutant encore à ma curiosité, j’ai décidé de faire un test rapide: j’ai démarré Music sur une installation CM9, puis j’ai abandonné. J'ai ensuite vérifié la liste des applications récentes et constaté qu'elle était bel et bien là (et dans le bon état, en fonction de la vignette). Je suis ensuite entré dans Paramètres-> Applications et la force a arrêté l'application Musique, mais elle figurait toujours dans la liste récente, ce qui me porte à croire qu'elle n'est pas liée à des processus en arrière-plan.

    Réalisant maintenant que la musique était peut-être un mauvais choix, j'ai également testé l'application USA Today. Cela présentait fondamentalement le même comportement, et il semblait qu’il avait été forcé de «redémarrer» après l’arrêt forcé (ce qui est logique) bien que la vignette dans la liste des applications récentes ne reflète pas cela (mis en cache, je suppose?).

    Alors, que se passe-t-il réellement au niveau du système d'exploitation lorsque vous faites glisser une application de la liste récente? Est-ce simplement effacer les données de l'application de la RAM et les ordures les collecter, détruisant son état enregistré?

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

    Les réponses

    Austin Mills, contributeur Android enthousiaste, offre quelques idées:

    Faire glisser des applications de la liste des applications récentes est une vanille, et oui, cela n’est pas bien documenté. Cela a fait l’objet de nombreuses discussions sur divers forums Android… le consensus semble être mieux décrit ici dans certains commentaires: que le comportement est similaire à la fermeture d’une application, mais pas exactement la même chose - en général (pour les applications qui ne définissez pas explicitement la gestion des boutons de retour), c’est la même chose que de revenir suffisamment de temps dans une application pour en sortir..

    Le lien contient des informations plus détaillées sur les détails, mais dans l’ensemble, vous pouvez penser qu’il s’agit de quitter l’application..

    En ce qui concerne l’application Musique, je pense qu’il démarre un service. Ainsi, bien que la tâche elle-même (l’application Musique / l’interface utilisateur) puisse être fermée, le service continue de s’exécuter en arrière-plan, de sorte que votre musique ne s’arrête pas soudainement simplement parce que la tâche s'est effacé pour des raisons de gestion de la mémoire. Cela peut avoir affecté ce que vous avez vu.

    Puis, participant au cercle de questions-réponses de la vie, Eldarerathis est revenu avec quelques recherches personnelles pour compléter la réponse:

    Il semble que j'ai trouvé les termes de recherche magiques qui ont conduit à des explications de la part des employés de Google. Plus précisément, j'ai trouvé deux endroits différents où Dianne Hackborn explique ce qui se passe lorsque vous faites glisser un élément de la liste récente. Le premier est un commentaire sur l'un de ses posts Google+:

    [Ce qui se produit spécifiquement lorsque vous effacez une tâche récente est la suivante: (1) tue tous les processus en arrière-plan ou vides de l'application (voir ici ce que cela signifie), et (2) utilise la nouvelle API pour indiquer à tout service de l'application sur la tâche étant supprimée afin qu'il puisse faire tout ce qu'il pense est approprié.

    Elle note également dans un commentaire de blog:

    En fait, la suppression d'une entrée dans les tâches récentes supprimera tous les processus d'arrière-plan existant pour le processus. Cela n'entraînera pas directement l'arrêt des services, mais une API leur permettra de savoir que la tâche a été supprimée et de décider s'ils souhaitent que cela signifie qu'ils doivent s'arrêter. C’est pour que la suppression, par exemple, que la tâche récente d’une application de messagerie électronique ne l'empêche pas de rechercher des messages électroniques..

    Si vous voulez vraiment arrêter complètement une application, vous pouvez appuyer longuement sur les tâches récentes pour accéder à l'information de l'application et appuyer sur force stop ici. Forcer l'arrêt est une tuerie complète de l'application - tous les processus sont tué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 à se relancer jusqu'à ce qu'elle soit explicitement demandée..

    Le résumé indique donc que balayer une application hors de la liste va d'abord tuer tous les processus en arrière-plan de l'application, puis utiliser onTaskRemoved pour notifier à l'application que la tâche en arrière-plan a été supprimée. À ce stade, il semble que ce soit à l’application de décider de ce qui se passera, donc je suppose qu’il existe techniquement n'est pas une règle absolue sur ce qu'il advient de l'application au-delà de ce point.


    Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.