Ce qui va se passer lorsque le Système.exit(0) exécuter?
J'ai deux activités différentes. Les premiers lancements dans la deuxième.
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
Dans la deuxième activité, j'Système d'appel.exit(0).
La première activité est causée par une page "pile" je pense.
Mais j'ai trouvé deux choses qui s'est passé.
- la variante en cours perdu de sa valeur. (Le progrès redémarrer je pense)
- le fichier créé dans la première activité, et ajouté des données dans la deuxième activité, et enregistré, perdu!(effacés à partir de bac à sable). Le fichier que j'ai créé à l'aide de
applicationContext.openFileOutput(fileName, Context.MODE_PRIVATE);
Était sandbox nettoyés dans cette situation? La sortie normale par "touche retour" ou même par android.os.Process.killProcess(android.os.Process.myPid())
, le fichier en sandbox a été conservé.
Donc, ce qui s'est réellement passé lorsque le Système.exit(0) exécuter?
Merci!
y dont u utiliser finish() à la place?
OriginalL'auteur Kane | 2012-02-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire qu'une chose:
Donot utiliser Système.exit(0); au lieu de cela, vous pouvez utiliser finition() comme suit:
Ici de données ne sera pas une perte.HTH 🙂
System.exit(0)
dans la deuxième activité. Je sais que ce n'est pas un bon moyen de sortir, mais je veux juste savoir ce qui se passerait si je l'ai fait.il mettra fin à l'curently de l'exécution de la JVM.
cela va entraîner le fichier perdu?
Zhang Si une non-persistants s'entend de toute temporaire, les données seront perdues.Mais si vous utilisez les données dans un fichier et de les stocker ensuite, vous pouvez le lire de nouveau.
Zhang willl u s'il vous plaît accepter la réponse
OriginalL'auteur Android Killer
La VM s'arrête la poursuite de l'exécution et du programme sera de sortie.
Maintenant, dans votre cas, la première activité est de retour grâce à l'activité de la pile. Ainsi, lorsque vous passez d'une activité à une autre en utilisant
Intent
, ne lefinish()
de l'activité actuelle de ce genre.Cela permettra de garantir qu'aucune activité en cours d'exécution lorsque nous fermer l'application.
Et pour la sortie de l'application utilisez ce code:
Et vous ne devriez pas utiliser
System.exit()
si votre utilisation de l'application de toute ressource en arrière-plan comme un lecteur de Musique qui joue de la chanson de fond ou de toute application qui utilise les données de l'internet en arrière-plan ou n'importe quel widget qui dépend de votre application.Pour plus d'informations, allez à travers les références suivantes:
OriginalL'auteur dakshbhatt21
Lire la documentation:
http://developer.android.com/reference/java/lang/System.html#exit(int)
OriginalL'auteur JoxTraex
android.os.Process.killProcess(android.os.Process.myPid())
etSystem.exit(0)
sont les mêmes. Lorsque vous appelez l'un d'eux à partir de la deuxième activité, puis l'application va être fermé et ouvert de nouveau avec une seule activité (nous supposons que vous avez eu 2 activités). Vous pouvez vérifier ce comportement en mettant l'exploitation forestière (Log.i("myTag", "MainActivity started");
) dans onCreate menthod de votre activité principale.OriginalL'auteur Sa Qada