web-dev-qa-db-fra.com

comment fermer complètement l'application Android

J'ai créé une application Android avec une option de déconnexion dans onCreateOptionsMenu. La déconnexion fonctionne parfaitement, mais lorsque j'appuie de nouveau sur le bouton Précédent, elle me ramène à l'activité précédente. Lorsqu'elle obtient une valeur nulle, elle est redirigée vers l'écran de connexion. Maintenant, mon écran de connexion apparaît encore et encore. Je veux fermer l'application complètement lorsque j'appuie sur le bouton Retour, mais je ne sais pas comment. 

Voici mon code pour gérer la pression du bouton Précédent dans l'écran de connexion:

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setTitle("BidNEMO")
        .setMessage("Are you sure you want to exit?")
        .setNegativeButton(Android.R.string.no, null)
        .setPositiveButton(Android.R.string.yes, new OnClickListener() {
         public void onClick(DialogInterface arg0, int arg1) {
         Main.super.onBackPressed();
         finish();
         }
         }).create().show();
     }

s'il vous plaît aider les gars ..

15
Brett

Pour Quit Application sur le clic du bouton, utilisez ce code:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

Essayez-le .. 

Pour tuer l'application complète et la supprimer de la liste Runningapp, supprimez-la via sa pid (son méchant) ... utilisez ces lignes avant le code ci-dessus.

int pid = Android.os.Process.myPid();
Android.os.Process.killProcess(pid);
50
ryderz8

Si vous souhaitez fermer complètement l'application, vous devez utiliser finishAffinity(); au lieu de finish() ..____. Il effacera toutes les piles d'activités précédemment ouvertes par une application.

14
SachiN Ware.

Pour les utilisateurs de Xamarin:

int pid = Android.OS.Process.MyPid();
Android.OS.Process.KillProcess(pid);

mettez-le dans votre fonction OnDestroy().

Modifier :

Après une enquête approfondie, j'ai découvert que même le code ci-dessus que j'ai écrit ne "tue" pas totalement l'application (en le supprimant du gestionnaire de tâches - "applications récentes"). Finalement, après beaucoup d'essais de code, j'ai réussi à comprendre quelque chose, écrasant les fonctions "Terminer" avec ce code:

public override void Finish()
    {
        if (Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
        {
            base.FinishAndRemoveTask();
        }
        else
        {
            base.Finish();
        }
    }

c'est la seule solution à cette question!

5
Roy Doron

Pour terminer une activité, j'utilise ce code:

public void appExit () {
    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}  //close method

ou tuer Processus avec ce code:

int pid = Android.os.Process.myPid();
Android.os.Process.killProcess(pid);
5
chiru

Pour API 21 et plus

finishAndRemoveTask()

Vous pouvez appeler cela pour fermer complètement l'application. Toutes les activités seront finish() et l'application sera supprimée de la liste des tâches.

3
Mick Ashton

Même si cela vous va, le processus de mise à mort vous causera des maux de tête à l'avenir. Vous pouvez vous en assurer en suivant le cas d'utilisation suivant:

  1. appeler plusieurs activités pour remplir la pile d'activités 
  2. appelez Android.os.Process.killProcess (pid);
  3. ouvrez votre application

OBSERVÉ: votre application ne s'ouvre pas de l'activité principale de manière incohérente. En effet, Android envisage de tuer le processus comme un crash. 

Vous trouverez des informations plus détaillées ici: Quitter une application est-il mal vu?

0
Pavel Polushkin
Android.os.Process.killProcess(Android.os.Process.myUid());

Je pense que c'est mieux .

0
AlienKilleR