1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Wie die komplette app beenden?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Vermeer, 08.03.2010.

  1. Vermeer, 08.03.2010 #1
    Vermeer

    Vermeer Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    11.01.2010
    Phone:
    HTC Magic
    Hi, kurze Frage:
    mit finish() kann ich ja eine activity beende, aber wie beende ich die gesamte App (mit mehreren activities)?

    Gruß
    Vermeer
     
  2. SeraphimSerapis, 08.03.2010 #2
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    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
     
  3. swordi, 08.03.2010 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm ein einfach System.exit(0) würde wohl auch reichen denke ich
     
  4. SeraphimSerapis, 08.03.2010 #4
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    führt bei mir auch gerne mal zu nem fc, auch mit try und catch.
     
  5. Vermeer, 08.03.2010 #5
    Vermeer

    Vermeer Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    11.01.2010
    Phone:
    HTC Magic

    Aber genau das schließt doch nur meine aktuelle activity, aber doch nicht alle, oder?
     
  6. SirMArtin, 08.03.2010 #6
    SirMArtin

    SirMArtin freier Samsungsupporter

    Beiträge:
    113
    Erhaltene Danke:
    7
    Registriert seit:
    05.08.2009
    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);
    }
    
     
    pyretta, TIMAH14 und Vermeer haben sich bedankt.
  7. SeraphimSerapis, 08.03.2010 #7
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    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
     
  8. SirMArtin, 08.03.2010 #8
    SirMArtin

    SirMArtin freier Samsungsupporter

    Beiträge:
    113
    Erhaltene Danke:
    7
    Registriert seit:
    05.08.2009
    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: 08.03.2010
  9. SeraphimSerapis, 08.03.2010 #9
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    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
     
  10. swordi, 08.03.2010 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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?
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. java app beenden