web-dev-qa-db-fra.com

Quitter/Terminer une application/activité - Android

J'ai 4 activités dites Act1, Act2, Act3 et Act4. Un bouton dans Act1 ouvre Act2, un bouton dans Act2 ouvre Act3, un bouton dans Act3 ouvre Act4.

Je veux deux choses à faire:

  1. J'ai un bouton dans Act4 qui dirige l'utilisateur vers Act1, le problème est que lorsque l'utilisateur clique de nouveau dans Act1, je veux fermer l'application au lieu d'ouvrir Act4.

  2. J'ai l'option dans le menu 'quitter' dans toutes les activités lorsque l'utilisateur le choisit, je veux fermer l'application au lieu de revenir à l'activité précédente.

Essayé d'utiliser finish(); mais il ne répondait pas à mes exigences.

16
kumareloaded

Utilisez le code ci-dessous dans votre Act4 'e Menu.xml' s bouton de sortie -

Intent intent = new Intent(Act4.this, Act1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);

Et, dans la méthode onCreate() de votre première activité, mettez simplement le code ci-dessous -

if (getIntent().getBooleanExtra("EXIT", false)) 
{
        finish();
}

Cela va quitter votre application.

29
Praveenkumar

Découvrez ce lien:

Cliquez ici

Vous pouvez utiliser :

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}

dans toutes les activités pour fermer l'application.

8
Krishna Suthar

terminer l'activité précédente lorsque vous passez à l'activité suivante signifie que vous écrivez finish(); après startactivity(intent); et écrivez ci-dessous le code correspondant à la première activité de l'événement de clic sur le bouton de la quatrième activité.

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

Et écrivez en dessous du code sur l'événement Click de votre bouton de sortie dans toutes les activités.

finish();
2
Dipak Keshariya
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Supprimez l'indicateur avant de revenir à l'activité précédente. Cela pourrait vous aider.

2
Prerak

Placez ce code dans votre application:

moveTaskToBack(true);
Android.os.Process.killProcess(Process.myPid());
System.exit(1);
1
Manikumar Gouni

Utilisez Android:noHistory = "true" dans votre fichier AndroidManifest.xml

    <activity
        Android:name=".Act1"
        Android:noHistory="true" />
    <activity
        Android:name=".Act2"
        Android:noHistory="true" />
    <activity
        Android:name=".Act3"
        Android:noHistory="true" />
    <activity
        Android:name=".Act4"
        Android:noHistory="true" />
0
Jithin Jude

J'utilise cette méthode:
1. Créez une activité statique dans la première activité qui fermera le fichier activité (s) restante (s).
2. Puis appelez-le dans la méthode statique comme ceci, il fermera l'application où que vous l'appeliez.

public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    activity=this;
}
public static void CloseApp(){
    activity.finish();
} 
0
Hakim Douib
Do a 
<code>

try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>
0
user2955481

L’approche que j’utilise consiste à démarrer toutes les activités enfants avec startActivityForResult. Ensuite, je peux mettreExtra ("STATE", some_value) à la sortie d’un enfant et utiliser la valeur de l’état pour déterminer ce qu’il faut faire par l’intermédiaire des parents.

Si je veux quitter l'application d'un enfant profond, "STATE" serait "exit" et chaque enfant de la hiérarchie obtiendrait simplement le StringExtra pour "exit", effectuera un putExtra ("STATE", "exit") et appellera finish () et l'application appellerait finish () à la fin. Vous pouvez l'utiliser pour atteindre n'importe quel état souhaité.

L'utilisation de startActivityForResult pour transmettre des messages de cette manière vous évite d'avoir à passer des références compliquées dans les activités enfants et simplifie votre approche pour définir l'état souhaité de l'application.

0
R Earle Harris

Si vous avez une autre activité derrière (dans la pile d'activité de l'application), vous pouvez utiliser finish() pour quitter l'activité en cours.

Cependant, la fonction de retour suppose également de supprimer l'activité en cours de la pile d'activités de votre application.

D'après mon expérience, il n'est pas très fiable de s'appuyer sur les activités de la pile arrière (dans la pile d'activité des applications). À cause de ça, je sortais de chaque activité quand j'approfondissais.

Dans ton cas:

Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit 

La méthode ci-dessus quittera toutes les activités.

Toutefois, si vous souhaitez exécuter du code en arrière-plan, il est préférable de s'appuyer sur un "service" plutôt que sur une "activité". Vous pouvez laisser le "Service" sortir après avoir effectué le travail qui lui est assigné.

0
kalan