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 de cette fonctionnalité, mais je suis curieux de savoir ce que fait réellement le système.
Ajoutant à 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 bien là (et dans le bon état, en fonction de la vignette). Je suis ensuite entré Settings->Applications
et j'ai forcé l'application Music, 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 hors de la liste récente? Est-il simplement effacer les données de l'application de la RAM et les ordures les collecter, détruisant son état enregistré?
la source
Je semble avoir trouvé les termes de recherche magiques qui ont conduit à des explications de la part des employés de Google. En particulier, 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+ :
Elle note également dans un commentaire de blog :
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 l'utiliser
onTaskRemoved
pour notifier à l'application que la tâche en arrière-plan a été supprimée. À ce stade, il semble que l'application ait le choix de décider de ce qui se passera, alors je suppose qu'il n'y a techniquement pas de règle stricte sur ce qu'il advient de l'application au-delà de ce point.la source
Il y a quelques informations dans le code source dans les classes com.android.internal.policy.impl.RecentApplicationsBackground et com.android.internal.policy.impl.RecentApplicationsDialog .
Si je les lis correctement, il existe des gestionnaires spécifiques pour la sélection des applications, mais rien de spécial pour les glisser, à l'exception des
onDetachedFromWindow()
appelscom.android.View.onDetachedFromWindow()
qui masquent l'élément et effacent ses données. Cela laisserait supposer que rien ne se passe de particulier en balayant l'application, ce qui correspond à la réponse d'Austin Mills, car, comme la liste ne montre pas l'application active, lesonPause()
appels système ainsi que les autres appels système effectués lorsque vous quittez une application ont déjà arrivé.la source
Je pense que cela fera la même chose que le bouton de retour. Sauf un petit changement. Ce sera
finish()
toute activité / fragments dans l'application.Je viens de faire un petit test avec une petite application auto-construction. Vous pouvez tester aussi. Voici mon application de test: https://bitbucket.org/Leandros99/lifecycletest (téléchargement disponible aussi. Pour ceux qui ne peuvent pas construire.)
Dans chaque méthode de cycle de vie d'Activité ( http://developer.android.com/reference/android/app /Activity.html#ActivityLifecycle ) affiche un journal de l’application. Vous pouvez l'afficher avec adb logcat (installer Android SDK, cd sur platform-tools dans cmd / shell et taper
adb logcat
. Maintenant, vous verrez qu'à chaque fois que vous faites quelque chose comme un bouton de retour ou d'accueil, l'application imprime la méthode de cycle de vie, mentionnée ci-dessus. )Votre question: Si je glisse une application dans le tiroir des applications récentes, la
onDestroy
méthode sera appelée. Il fait presque la même chose que le bouton Précédent.J'espère que j'ai aidé un peu. S'il y a des questions, il suffit de demander.
la source
Il ferme l'application et ses données stockées dans la RAM. Ainsi, vous disposez de plus d’espace RAM pour pouvoir exécuter d’autres applications. Cependant, les services d'arrière-plan NE sont PAS forcés de fermer automatiquement à la suite de la fermeture de l'application utilisant.
la source