iPhone App mit Simulator 4.0 hat Sigkill empfangen

8

Ich habe gerade das iPhone SDK 4 bekommen und ich versuche, die Entwicklung einer App, an der ich vorher gearbeitet habe, zu beenden. Also habe ich beides implementiert %Code% und -(void)applicationDidEnterBackground:(UIApplication *)application

Wenn ich im Simulator 4.0 auf die Home-Taste klicke, scheint es in Ordnung zu sein. Die App ruft - (void)applicationWillTerminate:(UIApplication *)application auf und tritt in den Hintergrundzustand ein.

Ich klicke jedoch zweimal auf die Home-Taste, um die im Hintergrund laufende App anzuzeigen, und halte sie gedrückt, um das Minuszeichen anzuzeigen oder zu beenden. Wenn ich auf das Minuszeichen klicke, sagt der Debugger

  

Programm empfangenes Signal: "SIGKILL"

Außerdem wird -(void)applicationDidEnterBackground:(UIApplication *)application niemals aufgerufen. Fehle ich etwas, was ich tun muss, damit OS4 funktioniert? Oder zumindest kann mir jemand eine Möglichkeit geben, SIGKILL zu debuggen. Vielen Dank.

    
NickDK 23.06.2010, 03:09
quelle

2 Antworten

13

-applicationWillTerminate: wird nur aufgerufen, wenn Ihre Anwendung gerade ausgeführt wird, wenn sie zum Beenden aufgefordert wird. Wenn es sich bereits in einem suspendierten Zustand befindet (wie Sie es hier haben), sendet das System einfach ein Kill-Signal an die Anwendung. Dies geschieht, wenn der Benutzer die roten Minus-Tasten drückt, um die App manuell zu beenden, und wenn das System beschließt, die App auszuwerfen, um Speicher für die Vordergrundanwendung freizugeben.

Wenn Ihre Anwendung im Hintergrund läuft (z. B. Musik spielt oder einige Hintergrundaufgaben ausführt) und der Benutzer die Anwendung manuell durch Drücken der Minus-Taste beendet, erhalten Sie nur eine -applicationWillTerminate: -Nachricht. Daher müssen Sie alle Ihren Status / etc speichern. bevor Sie von -applicationDidEnterBackground: zurückkehren.

    
Jason Coco 23.06.2010, 03:33
quelle
2

Dies ist zu erwarten, dass die Multitasking-Leiste "red close button" dem Beenden einer Anwendung unter Mac OS X entspricht. Dies ist das dokumentierte Verhalten. Apple erwartet, dass normale Benutzer von iOS 4 Anwendungen einfach starten / verwenden / dimmen, die sie nicht in Bezug auf Beendigungsprozesse oder irgendetwas anderes denken müssen. Das System wird das schaffen.

Speichern Sie nur wichtige Daten in der Anwendung: willResignActive: oder applicationWillEnterBackground. Denn danach kann es passieren, dass Sie getötet werden, wenn der Speicherdruck das System zur Bereinigung zwingt ... Snow Leopard führte ein ähnliches Verhalten für Apps ein, die den Schlüssel NSSupportsSuddenTermination in ihrer Info.plist verwenden. Eine App teilt dem System grundsätzlich mit, dass es seine Daten nach und nach speichert, so dass im Hintergrund nichts mehr zu tun ist. Im Gegensatz zu großen monolithischen Apps Desktop-Apps ...

    
François P. 23.06.2010 22:24
quelle

Tags und Links