Wird nur applicationWillResignActive aufgerufen, wenn das iPhone herunterfährt?

8

Hallo Experten,

Ich habe getestet, was mit meiner App passiert, wenn das iPhone ausgeschaltet ist , während die App aktiv ist. Zu diesem Zweck habe ich die Callback-Methoden des Lebenszyklus der App in der xcode-Debugger-Konsole protokolliert.

Das Ergebnis war: Wenn ich den Ein- / Ausschalter des Gerätes einige Zeit drücke, wird applicationWillResignActive aufgerufen. Das iPhone zeigt eine Option an, um das Gerät auf dem Bildschirm auszuschalten. Wenn ich ackknowlege, um auszuschalten, schaltet sich das iPhone ab. Apperently werden jedoch keine Callback-Methoden wie applicationDidEnterBackground oder applicationWillTerminate genannt. Als Ergebnis würden alle Daten verloren gehen, wenn ich sie nicht in applicationWillResignActive speichern würde. Obwohl iOS App Programming Guide sagt, man sollte die Daten einer App in applicationDidEnterBackground und applicationWillTerminate speichern.

Was denken Sie, ist eine der beiden Methoden immer noch aufgerufen und wird nur nicht mehr in der Konsole gedruckt?

Mit freundlichen Grüßen

    
Coco 08.11.2010, 17:10
quelle

3 Antworten

3

Ich habe einige weitere Tests gemacht:

Ich habe die aufgerufenen Lifecycle-Methoden in einer Datenbank gespeichert und das iPhone ausgeschaltet, während die Anwendung ausgeführt wurde. Tatsächlich wird nur applicationWillResignActive aufgerufen. Aber nach dem Herunterfahren befindet sich meine Anwendung in dem Zustand "nicht ausgeführt", da das Starten der Anwendung Aufrufe von application:didFinsihLaunchingWithOptions: und applicationDidBecomeActive initiiert. Die Anwendungsdaten gehen also verloren, wenn ich sie nicht in applicationWillResignActive speichere.

Wenn die Batterie leer ist während eine Anwendung läuft applicationDidEnterBackground und applicationWillTerminate heißen (kein Aufruf von applicationWillResignActive !).

    
Coco 13.11.2010 23:21
quelle
1

Ich denke, dass dein Test wahrscheinlich richtig ist. Die App ist nicht mehr aktiv, ist aber nicht in den Hintergrund getreten - so ähnlich wie wenn ich anrufe - also finde ich die Benachrichtigungen sinnvoll.

Was sollten Sie dagegen tun? Mein Vorschlag wäre nichts. Es scheint mir, dass dieses Ereignis so selten passiert, dass es sich nicht lohnt, sich darüber Gedanken zu machen. Wenn Sie Gürtel und geschweifte Klammern verwenden möchten, sollte der Speicherstatus in 'applicationWillResignActive' funktionieren, solange es nicht viel zu speichern gibt.

    
Stephen Darlington 09.11.2010 21:03
quelle
0

Ich habe das getestet. Dies ist die Reihenfolge, in der die Methoden aufgerufen werden.

  1. applicationWillResignAktiv - Wenn der Benutzer die Sperrtaste auf dem Gerät lange gedrückt hält (und ein Schieberegler angezeigt wird, in dem der Benutzer aufgefordert wird, "Slide to power off" auszuschalten)

Wenn Sie rutschen, ruft das Gerät folgende zwei Methoden in Ihrer App in der folgenden Reihenfolge auf

  1. applicationDidEnterBackground

  2. AnwendungWillTerminate

Das Gerät wird ausgeschaltet.

Ich gehe davon aus, dass das passiert, wenn die Batterie leer ist.

Dies wurde auf 3Gs mit iOS 5.0 getestet

Hoffe, das hilft.

    
Dev 08.06.2012 09:39
quelle

Tags und Links