1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. Vermeer, 08.03.2010 #1
    Vermeer

    Vermeer Threadstarter Neuer Benutzer

    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

    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

    hmm ein einfach System.exit(0) würde wohl auch reichen denke ich
     
  4. SeraphimSerapis, 08.03.2010 #4
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    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


    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

    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

    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

    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

    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

    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. android app beenden code

    ,
  2. java app beenden

    ,
  3. android studio programm beenden