Junior
Kas saaksid rääkida iOS-i rakenduse elutsüklist?
sobes.tech AI
Vastus AI-lt
Raksts iet cauri šādiem stāvokļiem:
- Nav darbināms: Lietojumprogramma nav palaista.
- Neaktīvs: Lietojumprogramma ir palaista, bet nesasniedz notikumus (piemēram, ienākoša zvana laikā vai pāreja uz fonu).
- Aktīvs: Lietojumprogramma ir aktīva un pilnībā funkcionējoša. Saņem visus notikumus.
- Fons: Lietojumprogramma atrodas fonā. Var izpildīt ierobežotu kodu vai tikt pārtraukta.
- Pārtraukts: Lietojumprogramma ir fonā, bet tās 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ā")
}
}
}
}