Wie beendet man die App am besten?

  • 5 Antworten
  • Letztes Antwortdatum
S

shantejo

Neues Mitglied
3
Hallo,

ich frage mich wie man die App am besten schließen sollte..Ich habe schon ein bisschen gesucht, aber noch nicht viel gefunden (Bzw immer nur etwas für Benutzer und nicht für Entwickler).

Meine bisherige Variante war in etwa so:

Code:
    public void wzl_[I]<nächste Activity>[/I](View view) {
        
        Intent i = new Intent(getApplicationContext(), [I]<nächste Activity>[/I].class);
        
        [I]<aktuelle Activity>[/I].this.finish();
        startActivity(i); 
    }
Also man schließt die aktuelle Activity und anschließend wird die neue gestartet und so bewegt man sich durch die ganze App. und wenn die App komplett geschlossen werden soll, wird dann eifnach die aktuelle Activity geschlossen.

Dann habe ich aber noch eine andere Variante gefunden, bei der man einfach immer die nächste Activity startet ohne die aktuelle zu schließen und alle in eine List einträgt. Wenn der schließen-Button gedrückt wird, wird dann die Liste durchgegangen und alle werden geschlossen.

Code:
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;

public class ActivityVerwaltung {
    
      private static List<Activity> _activities;

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

      public static void alleBeenden() {
        for (Activity activity : _activities) {
          activity.finish();
        }
      }
}
..und dann wird einfach in jeder onCreate() die hinzufuegen-funktion aufgerufen.



Also meine Frage wäre dann, welche der beiden Varianten ihr für besser haltet, bzw. ob es noch eine andere, sinnvollere, gibt.
 
Ich kenn eine sinnvollere.

GAR NICHT.

Warum sollte man das tun?
Android hat doch eine gute Speicherverwaltung und kümmert sich um alles was damit zutun hat.
 
Grundsätzlich hast du Recht, amfa, aber:

amfa schrieb:
Warum sollte man das tun?

ganz einfach: weil es gute Gründe dafür geben kann, dass eine App bzw. alle Activity-Instanzen komplett beendet werden muss/müssen... Nicht jede App hat Content, wo es egal ist, dass da ggf. noch Instanzen herum schwirren - das soll hier aber nun nicht Bestandteil der Diskussion sein.

@shantejo:

Es ist vllt. besser, wenn du uns deinen Beweggrund nennst... Da lässt sich auch entscheiden, ob das überhaupt in deinem Fall sinnvoll ist!

Zum Verhindern, dass man mit dem Back-Button zurück kommt, gibt es bessere Lösungen.

Alternativ zur Lösung mit deiner Liste, die die Instanzen der Aktivitäten beinhaltet, kannst du auch mit BroadcastReceivern arbeiten. D.h., dass du die BroadcastReceiver beim Start einer Activity registrierst, ins onReceive-Event dein finish() aufrufst, beim Zerstören der Activity den BroadcastReceiver wieder unregistrierst (öh komisches Wort?! :D ) etc.
 
Es ist vllt. besser, wenn du uns deinen Beweggrund nennst... Da lässt sich auch entscheiden, ob das überhaupt in deinem Fall sinnvoll ist!

Sie wird mehr oder minder empfindliche Daten beziehen, und ich hätte es gerne, dass die Daten sicher entfernt werden, wenn die App geschlossen wird, ohne, dass dann noch etwas im Hintergrund herumschwirrt.

Das mit dem Braodcastreciever muss ich mir mal anschauen, danke für den Tipp :)
 
Wenn die Daten sensibel genug sind, wäre es sogar noch besser, in onPause schon aufzuräumen.
 
Würd ich auch sagen, die LifeCycle Methode auswählen, bei der du sicher die Daten nicht mehr brauchst und sie weg sein sollen.
 

Ähnliche Themen

F
Antworten
9
Aufrufe
141
swa00
swa00
G
Antworten
0
Aufrufe
161
Gerdchen07
G
G
Antworten
1
Aufrufe
400
Gerdchen07
G
G
Antworten
13
Aufrufe
632
Gerdchen07
G
L
Antworten
3
Aufrufe
694
mips400
mips400
Zurück
Oben Unten