Video: iPhone 6 Ghost Touching / Touchscreen reagiert nicht - richtig beheben Teil 1 2024
Wenn der Benutzer auf die Unterbrechung reagiert (die SMS Nachricht für Beispiel) oder eine andere Anwendung gestartet hat, wird Ihre Anwendung in den Hintergrund verschoben.
Der Lebenszyklus der iOS-Anwendung.Wenn der Benutzer die Benachrichtigung oder Unterbrechung akzeptiert oder die Home-Taste drückt (oder wenn das System eine andere Anwendung startet), wechselt die Anwendung in den Hintergrundzustand, in dem sie angehalten wurde. (Wenn eine App weiterhin ausgeführt werden muss, kann sie Ausführungszeit vom System anfordern.)
Hier sind die Nachrichten, auf die Ihre Anwendung reagieren kann, nachdem sie in den Hintergrund verschoben wurde:
-
Die applicationDidEnterBackground: -Nachricht: Wenn Ihre App zum ersten Mal den Hintergrund betritt Status, es ist die applicationDidEnterBackground: Nachricht gesendet. In dieser Methode sollten Sie alle nicht gespeicherten Daten oder den -Zustand (in der sich der Benutzer in der App befindet - die aktuelle Ansicht, ausgewählte Optionen und ähnliches) in einer temporären Cachedatei oder in der Einstellungsdatenbank speichern. auf der Festplatte. "
Wissen Sie, dass Apple das iOS-Speichersystem als -Disk bezeichnet, obwohl es ein Solid-State-Laufwerk ist. Wenn Apple es also so nennt, sollten Sie es wahrscheinlich auch Verwechseln Sie nicht zu viele Leute.
Auch wenn Ihre Anwendung in den Hintergrundstatus wechselt, haben Sie keine Garantie, dass sie unbegrenzt dort verbleiben wird. Wenn der Speicher eingeschränkt wird, löscht iOS Hintergrund-Apps, um mehr Platz für die Vordergrund-App zu schaffen.
Sie müssen alles tun, um Ihre Anwendung wiederherstellen zu können, falls sie später aus dem Speicher gelöscht wird. Wenn Sie Ihre App das nächste Mal starten, kann Ihre Anwendung diese Informationen verwenden, um Ihre App wiederherzustellen. zu seinem vorherigen Zustand. Außerdem müssen Sie zusätzliche Bereinigungsoperationen durchführen, z. B. temporäre Dateien löschen.
Wenn Ihre Anwendung in diesem angehaltenen Zustand gelöscht wird, erhält sie keine Nachricht, dass sie aus dem Speicher entfernt wurde. Sie müssen vorher alle Daten speichern!
Wenn Ihre Stellvertretung die applicationDidEnterBackground: -Methode gesendet hat, hat Ihre App eine undokumentierte Zeitspanne, um die Vorgänge abzuschließen. Wenn die Methode nicht vor Ablauf der Zeit zurückgegeben wird (oder wenn Ihre App keine weitere Ausführungszeit von iOS anfordert), wird Ihre App beendet und aus dem Speicher gelöscht.
Wenn Ihre Anwendung mehr Ausführungszeit anfordert oder erklärt hat, dass sie eine Hintergrundausführung durchführt, kann sie ausgeführt werden, nachdem die applicationDidEnterBackground: -Methode zurückgegeben wurde. Wenn nicht, wird Ihre (jetzt) Hintergrundanwendung kurz nach der Rückkehr von der applicationDidEnterBackground: -Methode in den suspendierten -Status versetzt.
Wenn sich die Anwendung im Hintergrund befindet, wird sie möglicherweise neu gestartet. Dies kann passieren, wenn der Benutzer die App über den Startbildschirm oder die Multitasking-Leiste auswählt oder vom System gestartet wird, wenn die App Ereignisse im Hintergrund verarbeitet oder eine signifikante Standortänderung überwacht.
-
Die applicationWillEnterForeground: Nachricht: Wenn Ihre Anwendung vom Hintergrund neu gestartet wird, wird die applicationWillEnterForeground: Nachricht gesendet. In dieser Methode müssen Sie rückgängig machen, was Sie in der applicationDidEnterBackground: -Methode gemacht haben (nicht applicationWillResignActive; Sie machen dies als nächstes rückgängig).
Wenn der Benutzer die SMS-Nachricht ignoriert oder die App aus dem Hintergrund neu gestartet wird, wird Ihre Anwendung reaktiviert und beginnt mit der Berührung und anderen Ereignissen.
Wenn Ihre Anwendung reaktiviert wird, wird die Nachricht applicationDidBecomeActive: gesendet.
Sie können die applicationDidBecomeActive: -Methode verwenden, um die Anwendung in dem Zustand wiederherzustellen, in dem sie sich vor der Unterbrechung befand. Hier machen Sie rückgängig, was Sie in der Methode applicationWillResignActive getan haben, z. B. Neustart von Tasks, die angehalten wurden (oder noch nicht gestartet wurden), während die Anwendung inaktiv war. Wenn sich die Anwendung zuvor im Hintergrund befand, müssen Sie möglicherweise die Benutzeroberfläche aktualisieren.
Während sich eine Anwendung im angehaltenen Zustand befindet, verfolgt und verschmelzt das System (wirklich Netze out ) Ereignisse, die beim erneuten Starten dieser Anwendung Auswirkungen auf diese Anwendung haben könnten. Sobald Ihre Anwendung wieder verfügbar ist, werden diese Ereignisse vom System bereitgestellt.
Für die meisten dieser Ereignisse sollte die vorhandene Infrastruktur Ihrer Anwendung nur angemessen reagieren. Wenn sich die Geräteausrichtung beispielsweise geändert hat, aktualisieren die Ansichtscontroller Ihrer Anwendung automatisch die Schnittstellenausrichtung in geeigneter Weise.
Apps werden im Allgemeinen in den Hintergrund verschoben, wenn sie unterbrochen werden oder wenn der Benutzer beendet wird. Aber wenn die App mit einer früheren Version des SDKs kompiliert wurde oder auf einer früheren Version des Betriebssystems läuft, das Multitasking nicht unterstützt - oder wenn Sie sich entscheiden, dass Ihre App nicht im Hintergrund ausgeführt werden soll und Sie setzen den UIApplicationExitsOnSuspend-Schlüssel in seine Info. Plist-Datei - iOS beendet Ihre App.
Selbst wenn Ihre Anwendung Multitasking unterstützt (fast alle an diesem Punkt), müssen Sie dennoch darauf vorbereitet sein, dass Ihre Anwendung ohne Benachrichtigung beendet wird. Der Benutzer kann Anwendungen explizit mit der Multitasking-Leiste beenden.
Wenn der Speicher eingeschränkt wird, entfernt das System möglicherweise Anwendungen aus dem Speicher, um mehr Platz zu schaffen. Wenn es Ihre suspendierte Anwendung entfernt, gibt es keine Warnung, geschweige denn! Wenn Ihre Anwendung jedoch derzeit im Hintergrundstatus ausgeführt wird, ruft das System die applicationWillTerminate: -Methode des Anwendungsdelegaten auf.
Wenn Ihr Anwendungsdelegierter die applicationWillTerminate: Nachricht in NichtMultitasking-Anwendungen oder im Hintergrund laufenden Anwendungen sendet, müssen Sie die gleichen Aufgaben wie in ApplicationDidEnterBackground ausführen: Außer diesmal wissen Sie, dass Ihre Anwendung gewonnen hat. Komme nicht aus dem Hintergrund zurück.
Ihre applicationWillTerminate: Methodenimplementierung hat eine begrenzte (wenn auch nicht dokumentierte) Zeitdauer, um zu erledigen, was sie tun und zurückgeben muss. Mehr als das und Ihre Anwendung wird beendet und aus dem Speicher gelöscht. (Der Terminator macht keinen Spaß.)