Junior
Pouvez-vous parler du cycle de vie d'une application iOS?
sobes.tech IA
Réponse de l'IA
L'application passe par les états suivants:
- Non en cours d'exécution : L'application n'est pas lancée.
- Inactif : L'application est lancée, mais ne reçoit pas d'événements (par exemple, lors d'un appel entrant ou lors du passage en arrière-plan).
- Actif : L'application est active et entièrement fonctionnelle. Elle reçoit tous les événements.
- Arrière-plan : L'application est en mode arrière-plan. Elle peut exécuter du code limité ou être suspendue.
- Suspendu : L'application en mode arrière-plan, mais son exécution est suspendue par le système pour économiser des ressources.
Les transitions entre états et les événements associés sont gérés par le framework système UIKit (ou SwiftUI) et le délégué de l'application (UIApplicationDelegate ou @main Struct en SwiftUI).
Méthodes clés du délégué de l'application :
application:didFinishLaunchingWithOptions:: L'application a été lancée.applicationDidBecomeActive:: L'application devient active.applicationWillResignActive:: L'application passe de l'état actif (par exemple, lors d'un appel entrant).applicationDidEnterBackground:: L'application passe en arrière-plan.applicationWillEnterForeground:: L'application passe de l'arrière-plan à l'actif.applicationWillTerminate:: L'application se termine.
Exemple d'utilisation dans App Delegate :
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Exécuté au lancement de l'application
print("Application lancée")
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
// L'application est devenue active
print("L'application est devenue active")
}
func applicationWillResignActive(_ application: UIApplication) {
// L'application passe de l'état actif
print("L'application passe de l'état actif")
}
func applicationDidEnterBackground(_ application: UIApplication) {
// L'application est passée en arrière-plan
print("L'application est passée en arrière-plan")
}
func applicationWillEnterForeground(_ application: UIApplication) {
// L'application passe au premier plan
print("L'application passe au premier plan")
}
func applicationWillTerminate(_ application: UIApplication) {
// L'application se termine
print("L'application se termine")
}
}
En SwiftUI, le cycle de vie est géré avec la structure avec @main et des méthodes comme onAppear, onDisappear, onChange. Des valeurs d'environnement permettent également de suivre l'état de la scène (ScenePhase).
import SwiftUI
@main
struct MyApp: App {
@Environment(\.scenePhase) var scenePhase // Suivi de l'état de la scène
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
// La scène est devenue active
print("La scène est devenue active")
} else if newPhase == .inactive {
// La scène est devenue inactive
print("La scène est devenue inactive")
} else if newPhase == .background {
// La scène est passée en arrière-plan
print("La scène est passée en arrière-plan")
}
}
}
}