Wie die komplette app beenden?

V

Vermeer

Neues Mitglied
0
Hi, kurze Frage:
mit finish() kann ich ja eine activity beende, aber wie beende ich die gesamte App (mit mehreren activities)?

Gruß
Vermeer
 
du könntest in jeder activity folgendes machen:

Klasse Beispielname:
Code:
public static Beispielname bsp;
onCreate(..) {
   ...
   bsp = this;
}

Und dann dort, wo du deinen Ausstiegspunkt hast einfach:
Code:
try {
   Beispielname.bsp.finish();
} catch(...) {...}

Und das eben für jede Klasse.

Gruß Tim
 
hmm ein einfach System.exit(0) würde wohl auch reichen denke ich
 
swordi schrieb:
hmm ein einfach System.exit(0) würde wohl auch reichen denke ich

führt bei mir auch gerne mal zu nem fc, auch mit try und catch.
 
SeraphimSerapis schrieb:
du könntest in jeder activity folgendes machen:

Klasse Beispielname:
Code:
public static Beispielname bsp;
onCreate(..) {
   ...
   bsp = this;
}

Und dann dort, wo du deinen Ausstiegspunkt hast einfach:
Code:
try {
   Beispielname.bsp.finish();
} catch(...) {...}

Und das eben für jede Klasse.

Gruß Tim


Aber genau das schließt doch nur meine aktuelle activity, aber doch nicht alle, oder?
 
SeraphimSerapis schrieb:
du könntest in jeder activity folgendes machen:

Klasse Beispielname:
Code:
public static Beispielname bsp;
onCreate(..) {
   ...
   bsp = this;
}
Und dann dort, wo du deinen Ausstiegspunkt hast einfach:
Code:
try {
   Beispielname.bsp.finish();
} catch(...) {...}
Und das eben für jede Klasse.

Gruß Tim
Ihhh. :eek::eek:

Dann lieber beim onCreate die Klasse in einer Registry registrieren und diese Beim Ausstiegspunkt aufrufen.

z.B. so:
Registry:
Code:
public class ActivityRegistry {
  private static List<Activity> _activities;

  public static void register(Activity activity) {
    if(_activities == null) {
      _activities = new ArrayList<Activity>();
    }
    _activities.add(activity);
  }

  public static void finishAll() {
    for (Activity activity : _activities) {
      activity.finish();
    }
  }
}

in jeder Activity dann:
Code:
.... void onCreate() {
  ActivityRegistry.register(this);
}
 
  • Danke
Reaktionen: pyretta, TIMAH14 und Vermeer
SirMArtin schrieb:
Ihhh. :eek::eek:

Dann lieber beim onCreate die Klasse in einer Registry registrieren und diese Beim Ausstiegspunkt aufrufen.

z.B. so:
Registry:
Code:
public class ActivityRegistry {
  private static List<Activity> _activities;

  public static void register(Activity activity) {
    if(_activities == null) {
      _activities = new ArrayList<Activity>();
    }
    _activities.add(activity);
  }

  public static void finishAll() {
    for (Activity activity : _activities) {
      activity.finish();
    }
  }
}

in jeder Activity dann:
Code:
.... void onCreate() {
  ActivityRegistry.register(this);
}

Das war ein quick and dirty Beispiel und nicht die Lösung aller Lösungen (welche bekanntlich 42 ist).
Im Endeffekt tut deine Lösung ja auch nichts anderes, nur schöner :D
 
SeraphimSerapis schrieb:
Das ist der wichtig Punkt... :p :D

Im Ernst. Ich hab nicht nachgeschaut, ob es eine bessere Lösung zum Beenden von Apps gibt. Ich wollte Dir auf keinen Fall auf den Schlips treten - falls es Dir jetzt so vorkam.

Zum Technischen:
Dein Vorschlag oben funktioniert im Prinzip genauso. NUR: Musst Du immer an jedem Punkt alle Activities pflegen. Außerdem rufst Du die statische Methode auf jeder Activity auf, auch wenn sie nicht gestartet war. Die Registry übernimmt das für Dich. Außerdem ist die Lösung generisch und sollte recht einfach bei einer neuen Activity nutzbar sein. Man muss nicht bei jeder neuen Activity daran denken auch den Ausstiegspunkt anzupassen.

Generell sollte es aber hoffentlich eine Methode ähnlich wie System.exit(0) nur in Schön geben. Einen Intent z.B. der das Herunterfahren einer App veranlasst.
Auf der anderen Seite könnte es ja auch sein, dass es garnicht vorgesehen ist, da ja Android die Verwaltung der Ressourcen komplett übernimmt. Auch die Kontrolle über den Lebenszyklus... und eine App zu beenden wäre ja ein Eingriff in den Lebenszyklus und damit in die Hoheit vom Android System...

Fragen über Fragen...

Viele Grüße, Martin

p.s.: meine Lösung oben ist ungetestet und nur "aus dem Handgelenk" geschrieben...
 
Zuletzt bearbeitet von einem Moderator:
SirMArtin schrieb:
p.s.: meine Lösung oben ist ungetestet und nur "aus dem Handgelenk" geschrieben...

Sollte funktionieren - habe es zwar auch nicht mit deinem getestet, aber mein Weg geht, und dann sollte deiner erst recht gehen.

Es gibt zur Zeit noch keinen "richtigen" Weg eine App komplett zu beenden, da das nicht vorgesehen ist - eigentlich haushaltet Android ja selbst alles und würde die Activity von sich aus killen, wenn sie "stört".

Viele Grüße,
Tim
 
swordi schrieb:
hmm ein einfach System.exit(0) würde wohl auch reichen denke ich

naja - ich habe keine activities die irgendwo ungewollt im hintergrund sind. von daher kann ich ein system.exit(0) ganz einfach machen. ohne dass sich irgendwer aufregt,

oder hat da jemand was dagegen?
 

Ähnliche Themen

M
Antworten
3
Aufrufe
148
moin
M
Manny87
  • Manny87
Antworten
11
Aufrufe
161
swa00
swa00
R
  • Robby1950
2
Antworten
23
Aufrufe
1.007
Robby1950
R
Zurück
Oben Unten