122 votes

Comment quitter une application Android de manière programmatique ?

Je suis sûr que cette question a été posée plusieurs fois car j'en ai lu quelques-unes. Mon client veut que je mette dans son application un bouton sur lequel les utilisateurs peuvent cliquer pour sortir. J'ai lu este et a trouvé un appel finish() le fera. Mais, la fin n'est que la fermeture de l'activité en cours, n'est-ce pas ? J'ai beaucoup d'activités, donc dans ce cas, je dois passer chaque instance d'activité et les terminer ou transformer chaque activité en modèle Singleton.

J'ai aussi appris à connaître Activity.moveTaskToBack(true) peut vous faire accéder à l'écran d'accueil. OK, il ne s'agit pas de fermer mais de mettre en arrière-plan le processus. Alors, c'est efficace ?

Quelle méthode dois-je utiliser pour fermer complètement l'application ? Une des méthodes décrites ci-dessus ou une autre méthode/une autre utilisation des méthodes ci-dessus ?

16voto

Amon Olimov Points 657

C'est trop facile. Utilisez System.exit(0);

14voto

Kasun Points 177

En fait, il y a deux situations possibles :

  1. Vous souhaitez peut-être quitter l'activité
  2. Ou vous voulez quitter l'application

Vous pouvez quitter l'activité en utilisant le code suivant :

var intent = new Intent(Intent.ActionMain);
intent.AddCategory(Intent.CategoryHome);
intent.SetFlags(ActivityFlags.NewTask);
startActivity(intent);
finish();

Mais cela ne tuera pas les activités sous-jacentes dans la même application. Cela va juste minimiser l'application.

Si vous voulez quitter l'application, utilisez le code suivant pour mettre fin à son processus :

android.os.Process.killProcess(android.os.Process.myPid()); 

pour le développement mono, utilisez simplement

process.KillProcess(Process.MyPid());

9voto

user5038993 Points 1

Et si this.finishAffinity()

Dans la documentation,

Terminez cette activité ainsi que toutes les activités immédiatement inférieures dans la tâche actuelle qui ont la même affinité. Cette fonction est généralement utilisée lorsqu'une application peut être lancée sur une autre tâche (par exemple à partir d'une ACTION_VIEW d'un type de contenu qu'elle comprend) et que l'utilisateur a utilisé la navigation vers le haut pour sortir de la tâche actuelle et entrer dans sa propre tâche. Dans ce cas, si l'utilisateur a navigué vers le bas pour accéder à d'autres activités de la deuxième application, toutes ces activités doivent être supprimées de la tâche d'origine dans le cadre du changement de tâche. Notez que cette finition ne vous permet pas de fournir des résultats à l'activité précédente, et une exception sera levée si vous essayez de le faire.

7voto

kathir Points 464
android.os.Process.killProcess(android.os.Process.myPid());

4voto

Mahmood Ali Points 130

Ceci effacera la tâche (pile d'activités) et commencera une nouvelle tâche.

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
System.exit(1);

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