Junior
Vai vari pastāstīt par iOS lietotnes dzīves ciklu?
sobes.tech AI
Atbilde no AI
Pieteikums iet cauri šādām stāvokļiem:
- Nav darbināms: Pieteikums nav palaists.
- Neaktīvs: Pieteikums ir palaists, bet nesaņem notikumus (piemēram, ienākoša zvana laikā vai pāreja uz fonu).
- Aktīvs: Pieteikums ir aktīvs un pilnībā funkcionāls. Saņem visus notikumus.
- Fons: Pieteikums atrodas fonā. Var izpildīt ierobežotu kodu vai tikt pārtraukts.
- Pārtraukts: Pieteikums ir fonā, bet tā izpilde ir pārtraukta sistēmas, lai ietaupītu resursus.
Stāvokļu pārmaiņas un ar tām saistītie notikumi tiek pārvaldīti ar sistēmas ietvaru UIKit (vai SwiftUI) un pieteikuma delegātu (UIApplicationDelegate vai @main Struct SwiftUI).
Galvenās pieteikuma delegāta metodes:
application:didFinishLaunchingWithOptions:: Pieteikums ir palaists.applicationDidBecomeActive:: Pieteikums kļūst aktīvs.applicationWillResignActive:: Pieteikums pāriet no aktīva stāvokļa (piemēram, ienākoša zvana laikā).applicationDidEnterBackground:: Pieteikums pāriet fonā.applicationWillEnterForeground:: Pieteikums pāriet no fona uz aktīvu.applicationWillTerminate:: Pieteikums tiek slēgts.
Piemērs izmantošanai App Delegate:
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Izpildās, kad tiek palaists pieteikums
print("Pieteikums ir palaists")
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Pieteikums kļūst aktīvs
print("Pieteikums kļuva aktīvs")
}
func applicationWillResignActive(_ application: UIApplication) {
// Pieteikums pāriet no aktīva stāvokļa
print("Pieteikums pāriet no aktīva stāvokļa")
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Pieteikums ir pārgājis fonā
print("Pieteikums ir pārgājis fonā")
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Pieteikums pāriet uz priekšplānu
print("Pieteikums pāriet uz priekšplānu")
}
func applicationWillTerminate(_ application: UIApplication) {
// Pieteikums tiek slēgts
print("Pieteikums tiek slēgts")
}
}
SwiftUI dzīves cikls tiek pārvaldīts ar struktūru ar @main un metodēm, piemēram, onAppear, onDisappear, onChange. Pieejamas arī Environment Values, kas ļauj uzraudzīt skatu stāvokli (ScenePhase).
import SwiftUI
@main
struct MyApp: App {
@Environment(\.scenePhase) var scenePhase // Skata stāvokļa uzraudzība
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
// Skats kļūst aktīvs
print("Skats kļuva aktīvs")
} else if newPhase == .inactive {
// Skats kļūst neaktīvs
print("Skats kļuva neaktīvs")
} else if newPhase == .background {
// Skats pārgājis fonā
print("Skats pārgāja fonā")
}
}
}
}