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

Programm beenden abfangen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von joschika77, 12.06.2009.

  1. joschika77, 12.06.2009 #1
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Hallo, mit dem Zurück-Pfeil beendet sich das Programm und sagt das es unerwartet geschlossen wurde oder so. Ich habe die onDestroy() Methode implementiert und dort
    Code:
    System.exit(0);
    eingefügt. Nun wird das Programm ordnungsgemäß beendet hoffe ich. Zumindest kommt die Fehlermeldung nicht mehr. Als nächsten Schritt wollte ich gerne die Frage stellen ob man das auch will und darauf reagieren. Dazu folgendes:

    Code:
        public void onDestroy()
        {
            showDialog(PROGRAM_CLOSE_ID);
        }
    
    Code:
        protected Dialog onCreateDialog(int id) 
        {
            switch (id) 
            {
                case PROGRAM_CLOSE_ID: return new AlertDialog.Builder(main.this)
                                        .setIcon(R.drawable.irgendeinicon)
                                        .setTitle("Beenden?")
                                        .setPositiveButton("Ok",new DialogInterface.OnClickListener() 
                                        {
                                            public void onClick(DialogInterface dialog,int whichButton)
                                            {        
                                                System.exit(0);
                                            }
                                         }).setNegativeButton("Abbrechen",new DialogInterface.OnClickListener() 
                                         {
                                                public void onClick(DialogInterface dialog,int whichButton) 
                                                {
                                                    //do nothing next time
                                                }
                                          }).create();
            }
            return null;
        }
    
    Wenn ich das über einen ButtonClick aufrufe funktioniert das, in der onDestroy Methode leider nicht. Ich hab mal debuggt und habe festgestellt das er dort erst viel später hinkommt, also wenn das Programm schon gar nicht mehr aktiv ist. Kann man da was gegen tun, oder gibt es einen anderen Weg? MfG
     
  2. friedger, 12.06.2009 #2
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    Was meinst Du mit Programm? Activity oder eine beliebige Komponente einer Anwendung? Was ist das Ziel?

    Normalerweise möchte das System wirklich das beenden, was das System beenden möchte, da würde ich eher nicht reinpfuschen...

    Friedger
     
  3. swordi, 13.06.2009 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    Jop android macht da sehr viel selbst, sag uns bitte genauer was du machen moechtest. Dann gibts eher nen guten tipp
     
  4. joschika77, 22.06.2009 #4
    joschika77

    joschika77 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    129
    Erhaltene Danke:
    1
    Registriert seit:
    26.05.2009
    Hallo ich möchte eine Activity beenden. Stellt sich die Frage ob Android die Activity wirklich beendet oder nur in den Hintergrund schiebt. Ich wollte an der Stelle eine Frage stellen z.B. Ob der Benutzer das wirklich beenden will oder so. MfG
     
  5. swordi, 22.06.2009 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn der benuzter nur den home button drückt, wird nichts wirklich beendet.

    außer der entwickler regelt das irgendwie in seiner app.

    ob der benutzer das wirklich beenden will, liegt 1) am benutzer und 2) an der app. manchmal ist es notwenig, dass alles sauber beendet wird.

    vor allem ist es aber notwendig, das keine programmleichen auf dem händy noch weiterlaufen, obwohl es niemand mehr benötigt. so sauber sollte das schon programmiert sein
     
  6. enjoy_android, 24.06.2009 #6
    enjoy_android

    enjoy_android Android-Lexikon

    Beiträge:
    1,258
    Erhaltene Danke:
    390
    Registriert seit:
    10.12.2008
    Naja um dem Android Paradigma zu folgen sollte man keine App "von Hand" beenden. Was anderes ist es wenn es um Background Services geht, diese sollten zum einem dem Nutzer klar und deutlich angezeigt werden. (der Nutzer muss wissen das die App etwas im Hintergrund tut) Außerdem muss der Nutzer die Möglichkeit haben den Service oder Receiver per Settings zu deaktivieren.

    Alles andere übernimmt Android für dich. Und es funktioniert auch richtig gut. Das einzige was immer wieder Probleme macht sind Apps die im Hintergrund laufen und nicht deaktivierbar sind.
     
  7. swordi, 24.06.2009 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    man sollte dem benutzer serwohl eine möglichkeit geben die app wirklich sauber zu beenden.

    auch wenn android sowas anbietet, warum sollte die app noch weiter im speicher liegen, obwohl sie niemand mehr haben will. das ist unlogisch und einfach nur faul von den entwicklern sich auf "android wird schon machen" auszureden ;)
     
  8. zx128, 24.06.2009 #8
    zx128

    zx128 Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Dieser Diskussion fehlt IMHO eine vernünftige Grundlage.

    Die wäre hier z.B. Activity | Android Developers

    Die andere Frage lautet: was will einer erreichen?

    Die soll zuerst beantwortet werden.

    Erst dann kann man darüber reden, ob es sinnvoll ist dem Benutzer eine Möglichkeit zu geben, die Activity (Das Wort "App" ist zu ungenau für Entwickler-Ecke hier) mit finish() zu beenden.
     
  9. enjoy_android, 24.06.2009 #9
    enjoy_android

    enjoy_android Android-Lexikon

    Beiträge:
    1,258
    Erhaltene Danke:
    390
    Registriert seit:
    10.12.2008
    Naja es geht darum die Mechnismen (die dafür vorgesehen sind) zu nutzen. Jeder Google Developer wird dir empfehlen diese zu nutzen und davon abraten eine Anwendung "händisch" zu beenden. Android kümmert sich um die Ressourcen Verteilung (pausieren, beende, starten etc. der Activities/Services etc.). Das heisst natürlich nicht das ein Anwendungsentwickler verschwenderisch mit den Ressourcen umgehen sollte. Jedenfalls findet man in keiner offiziellen Anwendung eine Möglichkeit diese "komplett" aus dem Speicher zu werfen und damit zu beenden. Das ganze hat absolut nichts mit Faulheit zu tun.
     
  10. swordi, 24.06.2009 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ok damit hast du recht.
     

Diese Seite empfehlen