Ich bin mir nicht sicher, ob das verpönt ist oder nicht, aber so mache ich es...
Schritt 1 - Ich habe normalerweise eine Klasse, die Methoden und Variablen enthält, auf die ich global zugreifen möchte. In diesem Beispiel nenne ich sie die Klasse "App". Erstellen Sie innerhalb der Klasse eine statische Activity-Variable für jede Aktivität, die Ihre App hat. Erstellen Sie dann eine statische Methode namens "close", die die finish()
Methode für jede dieser Aktivitätsvariablen wenn sie NICHT null sind . Wenn Sie eine Haupt-/Elternaktivität haben, schließen Sie diese zuletzt:
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();}
}
}
Schritt 2 - in jeder Ihrer Aktivitäten, überschreiben Sie die onStart()
y onDestroy()
Methoden. Unter onStart()
setzen Sie die statische Variable in Ihrer App-Klasse gleich " this
". Unter onDestroy()
setzen Sie ihn gleich null
. Zum Beispiel in der Klasse "Activity1":
@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;
}
Schritt 3 - Wenn Sie Ihre Anwendung schließen wollen, rufen Sie einfach App.close()
von überall her. Alle instanziierten Aktivitäten werden geschlossen! Da Sie nur Aktivitäten schließen und nicht die App selbst beenden (wie in Ihren Beispielen), kann Android von dort aus übernehmen und alle notwendigen Aufräumarbeiten durchführen.
Auch hier weiß ich nicht, ob dies aus irgendeinem Grund verpönt wäre. Wenn ja, würde ich gerne Kommentare dazu lesen, warum das so ist und wie es verbessert werden kann!