iOS suspendiert Apps standardmäßig, sobald sie in den Hintergrund wechseln. Hintergrundarbeit ist nur über definierte APIs wie das BackgroundTasks-Framework erlaubt. Wer Timer oder unkontrollierte Prozesse im Hintergrund einsetzt, riskiert sowohl Funktionsausfälle als auch erhöhten Akkuverbrauch.
Key Takeaways
- iOS suspendiert Apps beim Wechsel in den Hintergrund automatisch; Hintergrundausführung ist kein Standardverhalten.
- Das BackgroundTasks-Framework bietet zwei Kerntypen:
BGAppRefreshTaskfür kurze Aktualisierungen undBGProcessingTaskfür längere Wartungsaufgaben. - Ab iOS/iPadOS 26 gibt es mit
BGContinuedProcessingTaskeinen neuen Typ für Aufgaben, die im Vordergrund gestartet wurden und weiterlaufen sollen. - Timer wie
NSTimeroderTimerin Swift werden beim Suspendieren der App angehalten und sind kein Ersatz für Hintergrundtasks. - Das System entscheidet selbst, wann Hintergrundtasks ausgeführt werden, basierend auf Akkustand, Netzwerk und Nutzungsverhalten.
BGAppRefreshTaskundBGProcessingTaskmüssen in derInfo.plistunterBGTaskSchedulerPermittedIdentifiersregistriert werden.- Jeder Task muss mit
setTaskCompleted(success:)abgeschlossen werden, sonst drohen Einschränkungen durch das System. - Idempotente, kleine Arbeitseinheiten sind die Grundlage für zuverlässige Hintergrundausführung auf iOS.
Was ist iOS-Hintergrundausführung und wie funktioniert sie?
iOS erlaubt Apps keine unbegrenzte Ausführung im Hintergrund. Sobald eine App in den Hintergrund wechselt, wird sie vom System in einen suspendierten Zustand versetzt. Hintergrundausführung ist opportunistisch: Das System gewährt Rechenzeit nur dann, wenn es sinnvoll ist, also etwa bei ausreichend Akkukapazität oder einer aktiven WLAN-Verbindung.
Das Modell funktioniert in drei Phasen:
- Vordergrund: Die App läuft aktiv und hat vollen Zugriff auf CPU und Netzwerk.
- Hintergrund (kurze Übergangszeit): Die App hat nach dem Wechsel in den Hintergrund kurz Zeit, laufende Aufgaben abzuschließen.
- Suspendiert: Die App bleibt im Speicher, führt aber keinen Code aus.
Hintergrundausführung im Sinne dieses Artikels bedeutet also nicht, dass eine App dauerhaft läuft, sondern dass das System ihr zu definierten Zeitpunkten Rechenzeit einräumt.

Unterschied zwischen Background App Refresh und Background Tasks auf dem iPhone
Background App Refresh ist eine nutzersteuerbare Systemfunktion, die es Apps erlaubt, Inhalte im Hintergrund zu aktualisieren. Background Tasks sind die programmatische API-Ebene, über die Entwickler diese Aktualisierungen implementieren.
Der Unterschied ist wichtig:
| Merkmal | Background App Refresh | Background Tasks (API) |
|---|---|---|
| Steuerung | Nutzer in den Einstellungen | Entwickler via BackgroundTasks-Framework |
| Zweck | Inhalte aktuell halten | Konkrete Hintergrundarbeit planen |
| Sichtbarkeit | Systemeinstellung | Code-Implementierung |
| Abhängigkeit | Muss aktiviert sein | Benötigt Background App Refresh als Basis |
Wenn ein Nutzer Background App Refresh für eine App deaktiviert, werden auch geplante BGAppRefreshTask-Aufgaben nicht mehr ausgeführt. Entwickler sollten ihre Apps so gestalten, dass sie auch ohne Hintergrundaktualisierung funktionsfähig bleiben.
Wie lange können Timer im Hintergrund auf iOS laufen?
Timer laufen im Hintergrund auf iOS nicht weiter. Sobald eine App suspendiert wird, werden alle aktiven Timer– oder NSTimer-Instanzen eingefroren und erst fortgesetzt, wenn die App wieder in den Vordergrund kommt.
Das bedeutet konkret:
- Ein Timer, der alle 30 Sekunden feuern soll, wird nach dem Suspendieren nicht mehr ausgelöst.
- Nach dem Wiedereintritt in den Vordergrund läuft der Timer weiter, aber verpasste Ereignisse werden nicht nachgeholt.
- Für zeitgesteuerte Hintergrundarbeit ist
BGAppRefreshTaskdie richtige Alternative.
Häufiger Fehler: Entwickler verlassen sich auf Timer.scheduledTimer(...) für Hintergrundaufgaben wie das Aktualisieren von Standortdaten oder das Abrufen von Nachrichten. Das funktioniert nicht zuverlässig.
Warum stoppt meine App im Hintergrund?
iOS beendet oder suspendiert Apps im Hintergrund aus mehreren Gründen. Das System priorisiert Akkueffizienz und Systemressourcen über die Bedürfnisse einzelner Apps.
Häufige Ursachen:
- Kein registrierter Hintergrundmodus: Ohne aktivierte Background Modes Capability erhält die App keine Hintergrundzeit.
- Task nicht abgeschlossen: Wenn
setTaskCompleted(success:)nicht aufgerufen wird, wertet das System dies als Fehler und schränkt zukünftige Hintergrundausführungen ein. - Akkustand zu niedrig: Bei niedrigem Akkustand oder aktiviertem Energiesparmodus reduziert iOS Hintergrundaktivitäten stark.
- Speicherdruck: Bei Speicherknappheit beendet iOS suspendierte Apps, beginnend mit den zuletzt genutzten.
Was sind Hintergrundausführungsmodi auf iOS?
iOS bietet spezifische Hintergrundmodi für definierte Anwendungsfälle. Diese müssen in Xcode unter „Signing & Capabilities“ aktiviert werden.
Die wichtigsten Hintergrundmodi:
- Background Fetch: Für regelmäßige Inhaltsabfragen via
BGAppRefreshTask. - Background Processing: Für längere Aufgaben via
BGProcessingTask. - Location Updates: Für Apps, die kontinuierlich Standortdaten benötigen (z. B. Navigations-Apps).
- Audio: Für Apps, die Audiowiedergabe im Hintergrund fortsetzen.
- VoIP: Für Anruf-Apps, die auf eingehende Verbindungen warten.
- Remote Notifications: Für stille Push-Benachrichtigungen, die Hintergrundarbeit auslösen.
Jeder Modus hat eigene Anforderungen und Einschränkungen. Nur die tatsächlich benötigten Modi sollten aktiviert werden.
Wie implementiert man Background Tasks auf iOS?
Die Implementierung von Hintergrundtasks auf iOS erfordert vier klar definierte Schritte. Das BackgroundTasks-Framework ist dabei die einzige empfohlene API.

Schritt 1: Capability aktivieren In Xcode unter „Signing & Capabilities“ den Eintrag „Background Modes“ hinzufügen und „Background fetch“ oder „Background processing“ aktivieren.
Schritt 2: Info.plist konfigurieren
Den Schlüssel BGTaskSchedulerPermittedIdentifiers mit einem eindeutigen Task-Identifier eintragen, z. B. com.meinapp.refresh.
Schritt 3: Task registrieren
Im AppDelegate oder in der @main-Struktur den Handler registrieren:
<code class="language-swift">BGTaskScheduler.shared.register(
forTaskWithIdentifier: "com.meinapp.refresh",
using: nil
) { task in
handleAppRefresh(task: task as! BGAppRefreshTask)
}
</code>
Schritt 4: Task einplanen und abschließen
Den Task mit BGAppRefreshTaskRequest einplanen und nach Abschluss der Arbeit zwingend task.setTaskCompleted(success: true) aufrufen.
Ab iOS/iPadOS 26 kommt BGContinuedProcessingTask hinzu, der für Aufgaben gedacht ist, die im Vordergrund gestartet wurden und nach einem App-Wechsel weiterlaufen sollen, zum Beispiel ein laufender Export oder ein Upload.
NSTimer vs. Hintergrundausführung: Was ist der Unterschied?
NSTimer (bzw. Timer in Swift) ist ein Laufzeit-Mechanismus für zeitgesteuerte Ereignisse innerhalb einer aktiven App-Session. Hintergrundausführung ist ein Systemmechanismus, der Code zu vom System gewählten Zeitpunkten ausführt.
Die wichtigsten Unterschiede auf einen Blick:
Timerläuft nur, solange der App-Prozess aktiv ist. Bei Suspendierung wird er eingefroren.BGAppRefreshTaskwird vom System zu einem geeigneten Zeitpunkt gestartet, unabhängig vom App-Zustand.Timerist präzise für Vordergrundaufgaben.BGAppRefreshTaskist ungenau in der Timing-Kontrolle, aber zuverlässig für Hintergrundarbeit.
Faustregel: Timer für UI-Animationen und Vordergrundlogik verwenden. Für alles, was im Hintergrund passieren soll, das BackgroundTasks-Framework nutzen.
Akkuverbrauch durch iOS-Hintergrundausführung minimieren
Schlecht implementierte Hintergrundtasks sind eine der häufigsten Ursachen für erhöhten Akkuverbrauch auf dem iPhone. Das System drosselt oder blockiert Apps, die wiederholt zu viele Ressourcen im Hintergrund verbrauchen.

Maßnahmen zur Optimierung:
- Idempotente Arbeit: Jede Hintergrundaufgabe sollte so gestaltet sein, dass sie ohne Schaden mehrfach oder gar nicht ausgeführt werden kann.
- Kleine Arbeitseinheiten: Keine vollständigen Datenbankmigrationen oder großen Downloads in
BGAppRefreshTaskplatzieren. DafürBGProcessingTaskverwenden. - Netzwerk- und Ladeabhängigkeiten setzen:
BGProcessingTaskerlaubt es, Bedingungen wie „nur bei WLAN“ oder „nur beim Laden“ zu definieren. - Expiration Handler implementieren: Wenn das System den Task vorzeitig beendet, sollte der Expiration Handler den aktuellen Zustand sichern.
Wann beendet iOS Hintergrund-Apps?
iOS beendet Hintergrund-Apps, wenn Speicher benötigt wird oder wenn eine App gegen Systemrichtlinien verstößt. Das System folgt dabei einer Prioritätsliste: zuletzt genutzte und suspendierte Apps werden zuerst beendet.
Konkrete Auslöser:
- Speicherdruck durch andere Apps oder das System selbst
- Aktivierter Energiesparmodus
- Sehr niedriger Akkustand (unter ca. 20 %, als grobe Schätzung)
- Wiederholte Timeouts bei Hintergrundtasks
Apps können nicht verhindern, beendet zu werden. Sie sollten stattdessen ihren Zustand regelmäßig sichern, damit ein Neustart nahtlos wirkt.
Hintergrundausführung auf dem iPhone testen
Das Testen von Hintergrundtasks in der Entwicklung erfordert spezifische Xcode-Werkzeuge, da das System Tasks nicht sofort ausführt.
Testmethoden:
- Debugger-Befehl: In der Xcode-Konsole den Befehl
e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"com.meinapp.refresh"]ausführen, um einen Task manuell auszulösen. - Simulator: Background Tasks können im iOS-Simulator mit dem entsprechenden Debugger-Befehl simuliert werden.
- Gerätetest: Auf einem echten Gerät die App in den Hintergrund schicken und den Debugger-Befehl ausführen.
- Logs prüfen: Über Xcode Instruments oder den Konsolendienst prüfen, ob Tasks gestartet und korrekt abgeschlossen wurden.
Fazit und nächste Schritte
Die iOS-Hintergrundausführung ist kein akademisches Thema, sondern eine praktische Grundlage für jede App, die zuverlässig im Hintergrund arbeiten soll. iOS erlaubt keine unkontrollierte Hintergrundausführung. Wer das Modell versteht, kann Apps bauen, die akkuschonend, stabil und nutzerfreundlich sind.
Konkrete nächste Schritte:
- Das BackgroundTasks-Framework in bestehende Projekte integrieren und vorhandene Timer-basierte Hintergrundlogik ersetzen.
BGTaskSchedulerPermittedIdentifiersin derInfo.plistkonfigurieren und alle registrierten Task-Identifier dokumentieren.- Expiration Handler für jeden Task implementieren und sicherstellen, dass
setTaskCompleted(success:)in jedem Codepfad aufgerufen wird. - Bei iOS/iPadOS 26-Projekten prüfen, ob
BGContinuedProcessingTaskfür laufende Vordergrundaufgaben sinnvoll ist. - Hintergrundtasks auf echten Geräten testen und Akkuverbrauch mit Xcode Instruments überwachen.
Häufig gestellte Fragen (FAQ)
Kann eine iOS-App dauerhaft im Hintergrund laufen? Nein. iOS suspendiert Apps standardmäßig. Nur bestimmte Hintergrundmodi wie Audio, Location oder VoIP erlauben eine kontinuierliche Ausführung, und auch diese unterliegen Einschränkungen.
Wie oft wird BGAppRefreshTask ausgeführt? Das System entscheidet dies selbst, basierend auf Nutzungsmustern, Akkustand und Netzwerkstatus. Entwickler können nur einen frühesten Startzeitpunkt vorschlagen, keine genaue Frequenz erzwingen.
Was passiert, wenn ich setTaskCompleted nicht aufrufe? Das System wertet dies als Fehler. Wiederholte Verstöße führen dazu, dass der App weniger oder keine Hintergrundzeit mehr gewährt wird.
Laufen Timer weiter, wenn das Telefon gesperrt ist? Nein. Wenn die App suspendiert ist, was beim Sperren des Geräts in der Regel passiert, werden alle Timer eingefroren und erst beim nächsten Vordergrundbetrieb fortgesetzt.
Was ist der Unterschied zwischen BGAppRefreshTask und BGProcessingTask?
BGAppRefreshTask ist für kurze, regelmäßige Aktualisierungen gedacht (Laufzeit typischerweise unter 30 Sekunden). BGProcessingTask ist für längere Wartungsaufgaben vorgesehen und kann bei Bedarf WLAN und Ladevorgang als Voraussetzung setzen.
Was ist BGContinuedProcessingTask in iOS 26?
BGContinuedProcessingTask ist ein neuer Task-Typ in iOS/iPadOS 26, der es erlaubt, eine im Vordergrund gestartete Aufgabe nach einem App-Wechsel weiterzuführen, zum Beispiel einen laufenden Dateiexport oder Upload.
Beeinflusst der Energiesparmodus die Hintergrundausführung? Ja. Im Energiesparmodus reduziert iOS Hintergrundaktivitäten erheblich. Apps sollten so gestaltet sein, dass sie auch ohne regelmäßige Hintergrundaktualisierungen korrekt funktionieren.
Muss Background App Refresh für BGAppRefreshTask aktiviert sein?
Ja. Wenn der Nutzer Background App Refresh für eine App in den Einstellungen deaktiviert, werden BGAppRefreshTask-Aufgaben nicht ausgeführt.
Kann ich mehrere Background Tasks gleichzeitig einplanen? Ja, aber das System führt sie nicht zwingend gleichzeitig aus. Jeder Task sollte einen eindeutigen Identifier haben und unabhängig von anderen Tasks funktionieren.
Wie teste ich, ob mein Background Task korrekt funktioniert? Den Xcode-Debugger-Befehl zur manuellen Task-Simulation verwenden und anschließend die Systemlogs prüfen, um sicherzustellen, dass der Task gestartet und erfolgreich abgeschlossen wurde.

Hinterlasse jetzt einen Kommentar