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 ..
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 Running
app, 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);
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.
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!
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);
Pour API 21 et plus
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.
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:
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?
Android.os.Process.killProcess(Android.os.Process.myUid());
Je pense que c'est mieux .