Junior
Kannst du den Lebenszyklus einer iOS-Anwendung erklären?
sobes.tech KI
Antwort von AI
Die Anwendung durchläuft die folgenden Zustände:
- Nicht ausgeführt: Die Anwendung ist nicht gestartet.
- Inaktiv: Die Anwendung ist gestartet, empfängt aber keine Ereignisse (z.B. während eines eingehenden Anrufs oder beim Wechsel in den Hintergrund).
- Aktiv: Die Anwendung ist aktiv und voll funktionsfähig. Sie empfängt alle Ereignisse.
- Hintergrund: Die Anwendung befindet sich im Hintergrundmodus. Sie kann eingeschränkten Code ausführen oder pausieren.
- Angehalten: Die Anwendung im Hintergrundmodus, aber ihre Ausführung wird vom System zur Ressourceneinsparung pausiert.
Übergänge zwischen Zuständen und die damit verbundenen Ereignisse werden vom System-Framework UIKit (oder SwiftUI) und dem Anwendungsdelegierten (UIApplicationDelegate oder @main Struct in SwiftUI) verwaltet.
Wichtige Methoden des Anwendungsdelegierten:
application:didFinishLaunchingWithOptions:: Die Anwendung wurde gestartet.applicationDidBecomeActive:: Die Anwendung wird aktiv.applicationWillResignActive:: Die Anwendung wechselt vom aktiven Zustand (z.B. bei eingehendem Anruf).applicationDidEnterBackground:: Die Anwendung wechselt in den Hintergrund.applicationWillEnterForeground:: Die Anwendung wechselt vom Hintergrund in den Vordergrund.applicationWillTerminate:: Die Anwendung wird beendet.
Beispiel für die Verwendung im App Delegate:
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Wird beim Start der Anwendung ausgeführt
print("Anwendung gestartet")
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Die Anwendung ist aktiv geworden
print("Die Anwendung ist aktiv geworden")
}
func applicationWillResignActive(_ application: UIApplication) {
// Die Anwendung wechselt vom aktiven Zustand
print("Die Anwendung wechselt vom aktiven Zustand")
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Die Anwendung ist in den Hintergrund gewechselt
print("Die Anwendung ist in den Hintergrund gewechselt")
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Die Anwendung wechselt in den Vordergrund
print("Die Anwendung wechselt in den Vordergrund")
}
func applicationWillTerminate(_ application: UIApplication) {
// Die Anwendung wird beendet
print("Die Anwendung wird beendet")
}
}
In SwiftUI wird der Lebenszyklus mit der Struktur mit @main und Methoden wie onAppear, onDisappear, onChange gesteuert. Environment-Werte ermöglichen es auch, den Zustand der Szene (ScenePhase) zu verfolgen.
import SwiftUI
@main
struct MyApp: App {
@Environment(\.scenePhase) var scenePhase // Überwachung des Szenenstatus
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
// Szene wurde aktiv
print("Szene wurde aktiv")
} else if newPhase == .inactive {
// Szene wurde inaktiv
print("Szene wurde inaktiv")
} else if newPhase == .background {
// Szene ist im Hintergrund
print("Szene ist im Hintergrund")
}
}
}
}