Was sollte ich tun, wenn die normale Verarbeitung von My iOS Anwendung unterbrochen wird?

Auf einem iOS-Gerät können verschiedene Ereignisse außer Beendigung unterbrechen die App dem Benutzer zu reagieren und Ihre Anwendung bewegt sich in der zu ermöglichen inaktiven Zustand. Wenn der Benutzer eine Unterbrechung zu ignorieren wählt, Ihre Anwendung bewegt sich zurück in die aktiven Zustand und nach wie vor aktiv. Wenn der Benutzer den Alarm zu tippen entscheidet, Ihre Anwendung bewegt sich dann in seine Hintergrundzustand, wo es aufgehängt, sondern bleibt in Erinnerung.

iOS sendet Ihnen eine Reihe von Nachrichten, die Sie genau wissen zu lassen, was wie auch geschieht, um Ihnen die Gelegenheit nutzen, um Aktionen wie Speichern von Benutzerdaten und Zustandsinformationen, was bedeutet, den Punkt zu speichern, wo der Benutzer in der App war. Da die App im Hintergrund ist und immer noch im Gedächtnis, ist Neubelebung fast augenblicklich.

AN Objekte bleiben App im Speicher, so brauchen sie nicht neu erstellt werden, wenn die App relauncht. Wenn der Speicher begrenzt wird, kann iOS Apps im Hintergrund löschen, um mehr Platz für den Vordergrund app machen.

Da diese Unterbrechungen einen vorübergehenden Verlust der Kontrolle durch Ihre Anwendung verursachen, sind Touch-Ereignisse nicht mehr an Ihre App gesendet.

Die Folge von Ereignissen beginnt immer auf die gleiche Weise - mit der applicationWillResignActive: Nachricht an AppDelegate gesendet, wenn die App etwa ist vom aktiven zum inaktiven Zustand zu bewegen. Bei dieser Methode sollten Sie laufende Aufgaben anhalten, deaktivieren Timer, drosseln OpenGL ES Frame-Raten, und die Dinge allgemein gehalten.

Was passiert, nachdem diese auf eine abhängt) die Art der Unterbrechung, und b) wie der Benutzer antwortet auf die Unterbrechung. Ihre Anwendung kann entweder in den Hintergrund oder reaktiviert bewegt.

bild0.jpg

Wenn der Benutzer auf die Unterbrechung reagiert oder hat eine andere App gestartet wird Ihre App in den Hintergrund verschoben.

Die nächsten beiden Kugeln erklären die Nachrichten App reagieren können, nachdem sie in den Hintergrund verschoben worden ist:

  • Das applicationDidEnterBackground: Nachricht: Wenn Ihre App zuerst den Zustand Hintergrund tritt, ist es die geschickt applicationDidEnterBackground:Nachricht. Bei dieser Methode sollten Sie alle nicht gespeicherten Daten zu speichern oder Bundesland (Die aktuelle Ansicht, Optionen ausgewählt und wie das Zeug) in einen temporären Cache-Datei oder auf der Einstellungsdatenbank auf dem Datenträger.

    Auch wenn Ihre Anwendung den Hintergrund Zustand eintritt, haben Sie keine Garantie, dass es dort auf unbestimmte Zeit bleiben wird. Wenn der Speicher begrenzt wird, wird iOS Apps im Hintergrund löschen, um mehr Platz für den Vordergrund app machen. Sie müssen alles tun, was notwendig, um Ihre Anwendung wiederherzustellen, falls ist es anschließend aus dem Speicher gelöscht.

    Wenn Ihre Anwendung gelöscht wird, wenn es in diesem suspendierten Zustand, es erhält keine Notiz, dass es aus dem Speicher entfernt wird. Deshalb sollten Sie alle Daten speichern müssen, wenn Sie die Empfangs applicationDidEnterBackground:Nachricht.

    Wenn Ihre Delegierten gesandt ist, applicationDidEnterBackground:Verfahren, die App hat eine nicht dokumentierte Menge an Zeit, die Dinge zu Ende zu bringen. wenn der applicationDidEnterBackground:Methode nicht zurück, bevor die Zeit abgelaufen ist (oder wenn Ihre Anwendung nicht mehr Ausführungszeit von iOS Anfrage) aus dem Speicher wird Ihre Anwendung beendet und gespült.

    Wenn Ihre Anwendung mehr Ausführungszeit anfordert oder es erklärt hat, dass es die Ausführung im Hintergrund tut, ist es erlaubt, nachdem die weiterlaufen applicationDidEnterBackground:Methode zurückgibt. Wenn nicht, Ihre (jetzt) ​​Hintergrundanwendung auf die bewegt suspendiert Zustand kurz nachdem er von der zurückkehr applicationDidEnterBackground:Verfahren.

    Wenn die App im Hintergrund ist, kann es dann wieder gestartet werden. Dies kann passieren, wenn der Benutzer die App aus dem Home-Bildschirm oder die Multitasking-Leiste auswählt, oder es ist durch das System gestartet, wenn die App Ereignisse im Hintergrund verarbeitet oder überwacht einen bedeutenden Standortwechsel, zum Beispiel.

  • Das applicationWillEnterForeground: Nachricht: Wenn Ihre App aus dem Hintergrund neu aufgelegt wird, wird es die geschickt applicationWillEnterForeground:Nachricht. Bei dieser Methode müssen Sie rückgängig machen, was Sie in der tat applicationDidEnterBackground: Verfahren.

Wenn der Benutzer die SMS-Nachricht ignoriert, oder die App aus dem Hintergrund neu aufgelegt wird Ihre Anwendung aktiviert und startet Touch und andere Veranstaltungen zu bekommen.

Wenn Ihre App wieder aktiviert wird, ist es die geschickt applicationDidBecomeActive: Nachricht.

Sie können die Verwendung applicationDidBecomeActive:Methode, um die App zu dem Zustand wiederherzustellen es vor der Unterbrechung befand. Hier rückgängig machen Sie, was Sie in der tat applicationWillResignActive Verfahren, wie alle Aufgaben neu starten, (oder noch nicht gestartet) pausiert wurden, während die App nicht aktiv war. Wenn die App vorher im Hintergrund war, müssen Sie die Benutzeroberfläche zu aktualisieren.

Während eine App in den gesperrten Zustand befindet, verfolgt das System und verschmilzt (wirklich netsout) Ereignisse, die einen Einfluss auf diese App haben könnte, wenn es relauncht. Sobald Ihre App ist wieder läuft, liefert das System, um es diese Ereignisse. Für die meisten dieser Ereignisse, sollten Sie Ihre App die vorhandene Infrastruktur nur angemessen reagieren.

Apps werden in der Regel in den Hintergrund verschoben, wenn unterbrochen. Aber wenn die App mit einer sehr frühen Version des SDK kompiliert wurde, oder auf einer frühen Version des Betriebssystems ausgeführt wird, die nicht Multitasking unterstützt - oder wenn Sie entscheiden, dass Sie nicht wollen, Ihre App im Hintergrund laufen zu lassen und Sie setzen die UIApplicationExitsOnSuspend Schlüssel in seiner Info.plist Datei - iOS endet Ihre App.

Selbst wenn Ihre App Multitasking unterstützt, müssen Sie immer noch bereit, für Ihre Anwendung ohne Benachrichtigung, getötet zu werden. Der Benutzer kann apps töten explizit die Multitasking-Leiste verwenden. Darüber hinaus, wenn der Speicher begrenzt wird, kann das System Anwendungen aus dem Speicher zu entfernen, um mehr Platz zu schaffen. Wenn es nicht entfernen Sie Ihre suspendiert app, es macht Ihnen keine Warnung geben!

Wenn Ihre Anwendung Delegierten gesandt ist, applicationWillTerminate: Messaging-Anwendungen in nonmultitasking, oder diejenigen, die im Hintergrund laufen, müssen Sie die gleiche Art von Dingen, die Sie tun, um zu tun, in applicationDidEnterBackground:, außer dieser Zeit zu wissen, was Sie tun sie, dass Ihre App nicht aus dem Hintergrund zurückkommen.

Ihre applicationWillTerminate: Verfahren Implementierung hat eine begrenzte Menge an Zeit, zu tun, was es zu tun und zurückgeben muss. Mehr als das, und Ihre Anwendung beendet und aus dem Speicher gelöscht.

Menü