7 votes

différence entre System.exit() et killProcess()

Quelle est la différence si j'appelle System.exit() vs. killProcess() .
Je suis intéressé par la différence seulement

2voto

aromero Points 10666

Que devrions-nous utiliser ?

Personne, lisez ceci Est-il mal vu d'abandonner une application ?

2voto

user973931 Points 487

Je ne pense pas qu'il y ait de différence. Bien qu'avec System.exit(), vous devez appeler runFinalizersOnExit en premier.

2voto

Jesse Gordon Points 437

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.

0voto

Jack Points 5682

Ni l'un ni l'autre. Utilisez finish(). Voir este et le lien aromero recommandé. Laissez Android faire ce pour quoi il est conçu : gérer le cycle de vie de vos activités. Il a été conçu de cette façon pour une raison.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X