Sobes.tech
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")
            }
        }
    }
}