Share via


Einführung in die Hintergrundverarbeitung in iOS

iOS reguliert die Hintergrundverarbeitung sehr eng und bietet drei Ansätze zur Implementierung:

  • Registrieren einer Hintergrundaufgabe : Wenn eine Anwendung eine wichtige Aufgabe ausführen muss, kann sie iOS auffordern, die Aufgabe nicht zu unterbrechen, wenn die Anwendung in den Hintergrund wechselt. Beispielsweise kann es sein, dass eine Anwendung die Protokollierung bei einem Benutzer beenden oder das Herunterladen einer großen Datei beenden muss.
  • Als Background-Necessary-Anwendung registrieren: Eine App kann sich als spezifischer Anwendungstyp registrieren, der bestimmte Hintergrundanforderungen wie Audio , VoIP , Externes Zubehör , Kiosk und Standort aufweist. Diese Anwendungen sind berechtigungen für die fortlaufende Hintergrundverarbeitung zulässig, solange sie Aufgaben ausführen, die innerhalb der Parameter des registrierten Anwendungstyps liegen.
  • Hintergrund Updates aktivieren: Anwendungen können Hintergrundaktualisierungen mit der Regionsüberwachung oder durch Lauschen auf Signifikante Standortänderungen auslösen. Ab iOS 7 können Anwendungen auch registrieren, um Inhalte im Hintergrund mithilfe von Hintergrundabruf oder Remotebenachrichtigungen zu aktualisieren.

Anwendungszustände und Anwendungsdelegatmethoden

Bevor wir uns mit dem Code für die Hintergrundverarbeitung in iOS befassen, müssen wir verstehen, wie sich Hintergrundinformationen auf den Lebenszyklus einer iOS-Anwendung auswirken.

Der Lebenszyklus der iOS-Anwendung ist eine Sammlung von Anwendungszuständen und Methoden zum Wechseln zwischen ihnen. Eine Anwendung wechselt zwischen Zuständen basierend auf dem Verhalten des Benutzers und den Hintergrundanforderungen der Anwendung. Die Bewegung wird durch das folgende Diagramm veranschaulicht:

Diagramm zu Anwendungszuständen und Methoden der Anwendungsdelegaten

  • Nicht ausgeführt : Die Anwendung wurde noch nicht auf dem Gerät gestartet.
  • Ausführen/Aktiv : Die Anwendung befindet sich auf dem Bildschirm und führt Code im Vordergrund aus.
  • Inaktiv : Die Anwendung wird durch einen eingehenden Telefonanruf, eine SMS oder eine andere Unterbrechung unterbrochen.
  • Hintergrund: Die Anwendung wechselt in den Hintergrund und setzt die Ausführung von Hintergrundcode fort.
  • Angehalten : Wenn die Anwendung keinen Code hat, der im Hintergrund ausgeführt werden soll, oder wenn der gesamte Code abgeschlossen wurde, wird die App vom Betriebssystem angehalten . Der Prozess einer angehaltenen Anwendung wird beibehalten, aber die Anwendung kann keinen Code in diesem Zustand ausführen.
  • Zurück zu Nicht ausgeführt/Terminierung (selten): Gelegentlich wird der Prozess der Anwendung zerstört, und die Anwendung kehrt in den Zustand Nicht ausgeführt zurück. Dies geschieht in Situationen mit wenig Arbeitsspeicher oder wenn der Benutzer die Anwendung manuell beendet.

Seit der Einführung der Multitasking-Unterstützung beendet iOS selten Anwendungen im Leerlauf und hält ihre Prozesse stattdessen im Arbeitsspeicher angehalten . Wenn Sie den Prozess einer Anwendung aktiv halten, wird sichergestellt, dass die Anwendung schnell gestartet wird, wenn der Benutzer sie das nächste Mal öffnet. Dies bedeutet auch, dass Anwendungen frei vom Zustand Angehalten wieder in den Hintergrund versetzt werden können, ohne auf Systemressourcen zurückgreifen zu müssen. iOS 7 nutzt dieses Feature mit neuen APIs, die es Anwendungen ermöglichen, Hintergrundaufgaben anzuhalten, wenn das Gerät in den Standbymodus wechselt, Inhalte direkt aus dem Hintergrund ohne Benutzerinteraktion zu aktualisieren und vieles mehr. Wir werden die neuen APIs in iOS-Hintergrundtechniken behandeln.

Methoden des Anwendungslebenszyklus

Wenn eine App den Zustand ändert, benachrichtigt iOS die Anwendung über Ereignismethoden in der AppDelegate -Klasse:

  • OnActivated – Dies wird beim ersten Starten der Anwendung und jedes Mal bezeichnet, wenn die App wieder in den Vordergrund wechselt. Hier können Sie Code einfügen, der jedes Mal ausgeführt werden muss, wenn die App geöffnet wird.
  • OnResignActivation - Wenn der Benutzer eine Unterbrechung wie eine SMS oder einen Telefonanruf erhält, wird diese Methode aufgerufen, und die App wird vorübergehend inaktiviert. Wenn der Benutzer den Telefonanruf akzeptiert, wird die App in den Hintergrund gesendet.
  • DidEnterBackground – Wird aufgerufen, wenn die App in den Hintergrundzustand wechselt, gibt diese Methode einer Anwendung etwa fünf Sekunden Zeit, um sich auf eine mögliche Beendigung vorzubereiten. Verwenden Sie diese Zeit, um Benutzerdaten und Aufgaben zu speichern und vertrauliche Informationen vom Bildschirm zu entfernen.
  • WillEnterForeground – Wenn ein Benutzer zu einer hintergrundbasierten oder angehaltenen Anwendung zurückkehrt und sie im Vordergrund startet, WillEnterForeground wird aufgerufen. Dies ist der Zeitpunkt, um die App auf die Aufnahme des Vordergrunds vorzubereiten, indem sie jeden während DidEnterBackground gespeicherten Zustand aktiviert. OnActivated wird unmittelbar nach Abschluss dieser Methode aufgerufen.
  • WillTerminate – Die Anwendung wird heruntergefahren, und ihr Prozess wird zerstört. Diese Methode wird nur aufgerufen, wenn Multitasking auf dem Gerät oder der Betriebssystemversion nicht verfügbar ist, wenn der Arbeitsspeicher knapp ist oder wenn der Benutzer eine im Hintergrund stehenden Anwendung manuell beendet. Beachten Sie, dass angehaltene Anwendungen, die beendet werden, nicht aufrufen WillTerminate .

Das folgende Diagramm veranschaulicht, wie die Anwendungszustände und Lebenszyklusmethoden zusammenpassen:

Dieses Diagramm veranschaulicht, wie die Anwendungszustände und Lebenszyklusmethoden zusammenpassen.

Benutzersteuerelemente für Hintergrundfunktionen in iOS

In iOS 7 wurden mehrere Features eingeführt, die Benutzern mehr Kontrolle über den Hintergrundstatus einer Anwendung geben. Sowohl der App-Switcher als auch die Einstellung "App-Hintergrundaktualisierung" wirken sich auf den Anwendungslebenszyklus aus.

App-Umschalter

Der App-Umschalter ist ein wichtiges Steuerelementfeature, das in iOS 7 eingeführt wurde. Es wird gestartet, indem Sie auf die Schaltfläche Start doppeltippen, und zeigt die Anwendungen an, deren Prozesse aktiv sind:

Wechseln zwischen Apps mithilfe des App-Umschalters

Mithilfe des App-Umschalters können Benutzer durch Momentaufnahmen aller hintergrund- und angehaltenen Anwendungen scrollen. Wenn Sie auf eine Anwendung tippen, wird sie im Vordergrund gestartet. Durch Wischen nach oben wird die Anwendung aus dem Hintergrund entfernt, und der Prozess wird beendet. Im nächsten Abschnitt sehen wir uns den App-Switcher in der iOS Application Lifecycle-Demo genauer an.

Wichtig

Der App-Switcher zeigt keinen Unterschied zwischen hintergrund- und angehaltenen Anwendungen an.

Einstellungen für die App-Hintergrundaktualisierung

iOS 7 erhöht die Benutzerkontrolle über den Anwendungslebenszyklus, indem Benutzer die Hintergrundverwaltung für Anwendungen deaktivieren können, die für die Hintergrundverarbeitung registriert sind. Dies hindert Anwendungen nicht daran, Hintergrundaufgaben auszuführen.

Benutzer können diese Einstellung ändern, indem Sie zu Einstellungen > Allgemeine > Hintergrund-App-Aktualisierung navigieren und die Hintergrundberechtigungen für eine ausgewählte Anwendung bearbeiten. Wenn hintergrund-App-Aktualisierung deaktiviert ist, wird die Anwendung sofort nach dem Eingeben des Hintergrunds angehalten und an der Ausführung von Hintergrundverarbeitungen gehindert:

Einstellungen für die App-Hintergrundaktualisierung

Entwickler können die Status der Anwendung "Hintergrundaktualisierung" mit der BackgroundRefreshStatus API überprüfen. Ein Beispiel finden Sie unter Überprüfen der Hintergrundaktualisierungseinstellung.

Wir haben die Grundlagen des iOS-Anwendungslebenszyklus und Features zum Steuern des Anwendungslebenszyklus behandelt. Als Nächstes sehen wir uns den iOS-Anwendungslebenszyklus in Aktion an.