Je suis sûr que cette question a été posée à plusieurs reprises car j'en ai lu quelques-unes. Mon client veut que je mette un bouton dans son application où les utilisateurs peuvent cliquer et quitter. J'ai lu ceci et j'ai trouvé l'appelant finish()
le fera. Mais finir ne fait que fermer l'activité courante en cours, n'est-ce pas? J'ai beaucoup d'activités alors dans ce cas je dois passer chaque instance d'activité et les terminer ou transformer chaque activité en motif Singleton.
J'ai aussi appris à connaître Activity.moveTaskToBack(true)
qui peut vous permettre d'accéder à l'écran d'accueil. OK, cela ne ferme pas mais met en arrière-plan le processus. Alors est-ce efficace?
Quelle méthode dois-je utiliser pour fermer complètement l'application? L'une des méthodes décrites ci-dessus ou toute autre méthode/utilisation des méthodes ci-dessus?
En fait, tout le monde cherche à fermer l'application sur un événement onclick, où que ce soit une activité ....
Alors les gars amis essaient ce code. Mettez ce code sur l'événement onclick
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
Vous pouvez appeler System.exit (); sortir de toutes les activités.
submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Android.os.Process.killProcess(Android.os.Process.myPid());
System.exit(1);
}
});
Si vous souhaitez quitter votre application, utilisez ce code dans l'événement de votre bouton:
public void onBackPressed() {
moveTaskToBack(true);
Android.os.Process.killProcess(Android.os.Process.myPid());
System.exit(1);
}
@Override
public void onBackPressed() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("Exit Application?");
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
moveTaskToBack(true);
Android.os.Process.killProcess(Android.os.Process.myPid());
System.exit(1);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
C'est trop facile. Utilisez System.exit(0);
Il y a deux situations possibles:
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 supprimera pas les activités sous-jacentes dans la même application ..__ Ceci minimisera simplement l'application.
Si vous souhaitez 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());
Depuis api 16, vous pouvez utiliser la méthode finishAffinity, qui semble être sur le point de fermer toutes les activités associées par son nom et sa description javadoc:
this.finishAffinity();
Terminez cette activité ainsi que toutes les activités immédiatement inférieures à celle-ci dans la tâche en cours ayant la même affinité. Cela est généralement utilisé lorsqu'une application peut être lancée sur une autre tâche (par exemple à partir d'un ACTION_VIEW d'un type de contenu qu'elle comprend) et que l'utilisateur a utilisé la navigation vers le haut pour passer de la tâche en cours à sa propre tâche. Dans ce cas, si l'utilisateur a accédé à une autre activité de la deuxième application, toutes ces activités doivent être supprimées de la tâche d'origine dans le cadre du commutateur de tâches.
Notez que cette fin 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.
Depuis api 21 vous pouvez utiliser une commande très similaire
finishAndRemoveTask();
Termine toutes les activités de cette tâche et la supprime de la liste des tâches récentes.
Alternatives:
getActivity().finish();
System.exit(0);
int pid = Android.os.Process.myPid();
Android.os.Process.killProcess(pid);
Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);
Intent i = new Intent(context, LoginActivity.class);
i.putExtra(EXTRA_EXIT, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);
Source: Comment quitter une application Android par programme
J'espère que ça aide! Bonne chance!
Android.os.Process.killProcess(Android.os.Process.myPid());
Que diriez-vous de this.finishAffinity()
De la docs,
Terminez cette activité ainsi que toutes les activités immédiatement inférieures à celle-ci dans la tâche en cours ayant la même affinité. Cela est généralement utilisé lorsqu'une application peut être lancée sur une autre tâche (par exemple à partir d'un ACTION_VIEW d'un type de contenu qu'elle comprend) et que l'utilisateur a utilisé la navigation vers le haut pour passer de la tâche en cours à sa propre tâche. Dans ce cas, si l'utilisateur a accédé à d'autres activités de la deuxième application, elles doivent toutes être supprimées de la tâche d'origine dans le cadre du commutateur de tâches . Notez que cette fin 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.
Utilisez this.finishAffinity (); sur ce bouton au lieu de finish (); Si cela ne fonctionne pas, vous pouvez également essayer en ajoutant Android: noHistory = "true" dans votre manifeste, puis terminez votre activité en uisng finish (); ou finishAffinity ();
J'espère que ça aide....:)
@Override
public void onBackPressed() {
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
}
Essayez ceci sur un appel. Je l'utilise parfois dans onClick d'un bouton.
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Au lieu de fermer votre application, le tableau de bord s'ouvre, vous donnant l'impression que votre application est fermée.
lisez cette question pour plus de clarté Android - code d'application de sortie
Atteindre dans Xamarin.Android:
public override void OnBackPressed()
{
MoveTaskToBack(true);
Process.KillProcess(Process.MyPid());
Environment.Exit(1);
}
cela 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);
Cela fonctionne en utilisant seulement moveTaskToBack(true);
mettez celui-ci dans votre onClic:
moveTaskToBack(true);
finish()
activité fantôme appelée avec singletop et finish () sur onCreate devrait faire l'affaire
Si quelqu'un se demande encore, pour Xamarin.Android (dans mon cas, Monogame tourne aussi), la commande FinishAndRemoveTask()
sur Activity
fait très bien l'affaire!
Au lieu de System.exit (1), utilisez simplement System.exit (0)
Si vous utilisez les deux finition et quitter votre application se ferme complètement
terminer();
System.exit (0);
il suffit d'utiliser le code dans votre backpress
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Si vous utilisez EventBus (ou toute autre bibliothèque pub/sub) dans votre application pour communiquer entre les activités, vous pouvez leur envoyer un événement explicite:
final public class KillItWithFireEvent
{
public KillItWithFireEvent() {}
public static void send()
{
EventBus.getDefault().post(new KillItWithFireEvent());
}
}
Le seul inconvénient est que vous avez besoin de toutes les activités pour écouter cet événement et appeler leur propre finish()
. Pour cela, vous pouvez facilement créer des classes d'activité shim par héritage, qui écoutent simplement cet événement et permettent aux sous-classes de tout mettre en œuvre, puis assurez-vous que toutes vos activités héritent de cette couche supplémentaire. Les écouteurs de Kill pourraient même ajouter des fonctionnalités supplémentaires par le biais de substitutions, comme éviter la mort dans certaines situations particulières.
dans le fragment
getActivity (). finishAndRemoveTask ();
dans l'activité
finishAndRemoveTask ();
Just call these two Function
finish();
moveTaskToBack(true);
il suffit d'ajouter ce code: -
@Override
public void onBackPressed() {
finish();
super.onBackPressed();
}
Il suffit d’exécuter les deux lignes ci-dessous pour quitter l’application.
Android.os.Process.killProcess(Android.os.Process.myPid());
System.exit(1);