Quelle est la différence si j'appelle System.exit()
vs. killProcess()
.
Je suis intéressé par la différence seulement
Réponses
Trop de publicités?Que devrions-nous utiliser ?
Personne, lisez ceci Est-il mal vu d'abandonner une application ?
Il semble que System.exit() soit aussi bon à tous égards que kill -- mais beaucoup plus simple et moins dépendant d'autres éléments.
Certains ont suggéré de définir runFinalizersOnExit, mais d'après la documentation, cela est considéré comme dangereux et sera supprimé à partir de la version 1.0. Je suppose donc qu'il faut ignorer cette partie.
Contrairement à d'autres suggestions, finish() ne termine pas le processus Linux qui exécute l'application et ne libère pas toute la mémoire utilisée par l'application.
Certes, Android est conçu de telle sorte que, dans la plupart des cas, il n'est pas nécessaire de quitter une application (au prix d'une légère pause par la suite, Android supprimera vos anciennes applications lorsqu'il aura besoin de leur mémoire), mais si vous souhaitez, pour une raison ou une autre, supprimer votre application, System.exit() semble être la meilleure solution. Il arrête la machine virtuelle Java qui exécute votre application - ainsi toutes les ressources, la mémoire et les threads seront complètement vidés.
(Notez que vous pouvez spécifier dans votre fichier manifest que certains threads doivent s'exécuter dans différents processus linux -- dans ce cas, System.exit() ne tuerait probablement qu'une partie de votre application - mais c'est un sujet plus avancé).
En fait, je viens d'exécuter adb shell ps|grep app
et je vois l'application de démonstration com.example.Android.lunarlander, que je n'ai pas exécutée depuis environ une semaine, toujours en mémoire, occupant presque 100 000 octets de mémoire.