2012-04-07 2 views
0

Ich habe eine App, die einige Daten (Zeit, Benutzer GPS-Position usw.) aufzeichnet. Nun möchte ich das umsetzen: Wenn der Benutzer zurück drückt, öffne ich einen Alarmdialog mit zwei Optionen zum "Anhalten" oder "Beenden". Ich kann die onKeyDown-Methode überschreiben. Jetzt sollte "Beenden" bedeuten, dass die App geschlossen wird und die Aufzeichnung von Daten gestoppt wird. "Pause" sollte bedeuten, dass der Benutzer die App für einige Minuten schließen und dann fortsetzen kann, wenn er von genau dem gleichen Punkt wieder öffnet.Android: Pause (schließen) App, so dass es wieder auf dem gleichen Zustand geöffnet ist

Ich habe einige der Forschung getan, aber ich habe in vielen Punkten verwirrt:

1) Kann ich irgendwie garantieren, dass die Aktivität angehalten wird und nicht zerstört? Außerdem zerstört finish() die Aktivität. Gibt es eine Methode, um es programmgesteuert zu pausieren?

2) Wenn nur die onPause aufgerufen wird, wenn App wieder geöffnet wird sollte nicht von onResume gestartet werden? Also sollten alle Zähler (die ich normalerweise in der onCreate-Methode auf Null gesetzt habe) im letzten Zustand bleiben?

3) Eine naheliegende Möglichkeit wäre, den gesamten Status der Zähler usw. in der Geräte-DB zu speichern und dann wiederherzustellen, wenn der Benutzer wieder öffnet. Aber es ist schmerzhafter und vor allem eine gute Übung?

Vielen Dank im Voraus für jede Klärung!

+0

Doppelte Frage http://stackoverflow.com/questions/10047770/is-it-possible-to-save-previous-activity/10047836#comment12855761_10047836 – Kuffs

Antwort

2

Sie können nicht garantieren, dass die Aktivität niemals zerstört wird, wenn das System Speicher benötigt oder etwas automatisch einige Apps schließt, aber Sie können den Status Ihrer App in einer Variablen "savouredinstancestate" speichern Speichern in einer Persistenz-Datenbank oder in der SD.

Wenn Sie die App anhalten möchten, sollten Sie die "onPause" -Methode aufrufen und dann die Methode "onResume" aufrufen, wenn Sie dies tun, können Sie Ihre App aus dem letzten Zustand neu starten.

, wenn Sie möchten, dass Ihre App zu stoppen, rufen Sie nur die Methode „OnStop“

ich nicht ein Meister der Android bin, aber ich hoffe, dass diese Antwort ein wenig Licht über Ihre Frage werfen könnte;)

+0

Sie rufen onPause oder onResume nicht auf. Das System macht dies als Teil des Aktivitätslebenszyklus. http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – Kuffs

+1

Ja, aber Sie können das überschreiben, wenn Sie etwas anderes in diesem Teil tun wollen, oder vielleicht täusche ich mich? – Santanor

+0

Aber da ich die "onkeydown" -Methode überschreiben, um die Alarmdialoge zu implementieren, wie sollte dann die App schließen, nachdem der Benutzer wählt, was zu tun ist? Ich rufe die finish() -Methode an und ich denke, sie zerstört die Aktivität. Wenn ich es nicht anrufe, ist die App nicht geschlossen – george

Verwandte Themen