Junior
Podes falar sobre o ciclo de vida de uma aplicação no iOS?
sobes.tech IA
Resposta da IA
A aplicação passa pelos seguintes estados:
- Não em execução: A aplicação não está em execução.
- Inativa: A aplicação está em execução, mas não recebe eventos (por exemplo, durante uma chamada de entrada ou ao passar para o plano de fundo).
- Ativa: A aplicação está ativa e totalmente funcional. Recebe todos os eventos.
- Fundo: A aplicação está em modo de fundo. Pode executar código limitado ou ser suspensa.
- Suspensa: A aplicação em modo de fundo, mas sua execução está suspensa pelo sistema para economizar recursos.
As transições entre estados e os eventos associados são geridos pelo framework do sistema UIKit (ou SwiftUI) e pelo delegado da aplicação (UIApplicationDelegate ou @main Struct em SwiftUI).
Métodos chave do delegado da aplicação:
application:didFinishLaunchingWithOptions:: A aplicação foi lançada.applicationDidBecomeActive:: A aplicação passa a estar ativa.applicationWillResignActive:: A aplicação passa de estar ativa (por exemplo, durante uma chamada de entrada).applicationDidEnterBackground:: A aplicação passa para o modo de fundo.applicationWillEnterForeground:: A aplicação passa do fundo para o ativo.applicationWillTerminate:: A aplicação termina.
Exemplo de uso no App Delegate:
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Executa ao iniciar a aplicação
print("Aplicação iniciada")
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
// A aplicação tornou-se ativa
print("A aplicação tornou-se ativa")
}
func applicationWillResignActive(_ application: UIApplication) {
// A aplicação passa de ativa
print("A aplicação passa de ativa")
}
func applicationDidEnterBackground(_ application: UIApplication) {
// A aplicação passou para o fundo
print("A aplicação passou para o fundo")
}
func applicationWillEnterForeground(_ application: UIApplication) {
// A aplicação passa para primeiro plano
print("A aplicação passa para primeiro plano")
}
func applicationWillTerminate(_ application: UIApplication) {
// A aplicação termina
print("A aplicação termina")
}
}
Em SwiftUI, o ciclo de vida é gerido com a estrutura com @main e métodos como onAppear, onDisappear, onChange. Valores de Ambiente também permitem acompanhar o estado da cena (ScenePhase).
import SwiftUI
@main
struct MyApp: App {
@Environment(\.scenePhase) var scenePhase // Acompanhamento do estado da cena
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
// Cena tornou-se ativa
print("Cena tornou-se ativa")
} else if newPhase == .inactive {
// Cena tornou-se inativa
print("Cena tornou-se inativa")
} else if newPhase == .background {
// Cena passou para o modo de fundo
print("Cena passou para o modo de fundo")
}
}
}
}