Je ne suis pas sûr si c'est mal vu ou pas, mais c'est la façon dont je le fais...
Étape 1 - habituellement, j'ai une classe qui contient des méthodes et des variables que je veux accéder à l'échelle mondiale. Dans cet exemple, je vais l'appeler l ' "Application" de la classe. Créer statique variable à l'intérieur de la classe pour chaque activité de votre application. Puis créer une méthode statique qui s'appelle "fermer" qui sera exécutée à l' finish()
méthode sur chacune de ces variables d'Activité si elles ne sont PAS nulles. Si vous avez un principal/activité parent, fermez-la dernière:
public class App
{
////////////////////////////////////////////////////////////////
// INSTANTIATED ACTIVITY VARIABLES
////////////////////////////////////////////////////////////////
public static Activity activity1;
public static Activity activity2;
public static Activity activity3;
////////////////////////////////////////////////////////////////
// CLOSE APP METHOD
////////////////////////////////////////////////////////////////
public static void close()
{
if (App.activity3 != null) {App.activity3.finish();}
if (App.activity2 != null) {App.activity2.finish();}
if (App.activity1 != null) {App.activity1.finish();}
}
}
Étape 2 - dans chacune de vos activités, remplacer l' onStart()
et onDestroy()
méthodes. En onStart()
, définissez la variable statique dans votre classe App égal à "this
". En onDestroy()
, définissez égal à null
. Par exemple, dans le "Activity1" de la classe:
@Override
public void onStart()
{
// RUN SUPER | REGISTER ACTIVITY AS INSTANTIATED IN APP CLASS
super.onStart();
App.activity1 = this;
}
@Override
public void onDestroy()
{
// RUN SUPER | REGISTER ACTIVITY AS NULL IN APP CLASS
super.onDestroy();
App.activity1 = null;
}
Étape 3 - Lorsque vous souhaitez fermer votre application, il suffit de téléphoner App.close()
à partir de n'importe où. Tous les instancié activités à proximité! Puisque vous êtes seulement des activités de clôture et de ne pas tuer l'application elle-même (comme dans votre exemple), Android est libre de prendre le relais et faire du nettoyage nécessaire.
Encore une fois, je ne sais pas si ce serait mal vu pour une raison quelconque. Si oui, je serais ravi de lire les commentaires sur pourquoi il est et comment il peut être amélioré!
0 votes
Il y a déjà tellement de postes ici. stackoverflow.com/search?q=how+to+exit+an+Android+app
3 votes
Duplicata possible de Quitter une application - est-ce mal vu ?
0 votes
Utilisez 'System.exit(0);' lorsque vous voulez vraiment quitter l'application. Je l'ai fait pour une erreur irrécupérable après avoir montré un message à l'utilisateur. Si vous en avez besoin, vous pouvez même relancer automatiquement l'application en utilisant AlarmManager. Voir : blog.janjonas.net/2010-12-20/…
0 votes
La deuxième option donne l'impression d'un accident