Programm beenden abfangen

J

joschika77

Fortgeschrittenes Mitglied
1
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
 
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
 
Jop android macht da sehr viel selbst, sag uns bitte genauer was du machen moechtest. Dann gibts eher nen guten tipp
 
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
 
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
 
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.
 
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 ;)
 
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.
 
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
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.
 
enjoy_android schrieb:
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.

ok damit hast du recht.
 

Ähnliche Themen

K
Antworten
1
Aufrufe
807
swa00
swa00
Hansimglueck0815
Antworten
0
Aufrufe
733
Hansimglueck0815
Hansimglueck0815
M
  • maksimilian
Antworten
15
Aufrufe
1.700
maksimilian
M
Zurück
Oben Unten