Junior
Ar galite papasakoti apie iOS programėlės gyvavimo ciklą?
sobes.tech AI
Atsakymas iš AI
Programėlė pereina per šiuos būsenas:
- Nėra veikimo: Programėlė nėra paleista.
- Neaktyvi: Programėlė paleista, bet negauna įvykių (pvz., įeinančio skambučio metu arba pereinant į foninį režimą).
- Aktyvi: Programėlė yra aktyvi ir visiškai funkcionali. Gaukia visus įvykius.
- Fone: Programėlė yra foniniame režime. Gali vykdyti ribotą kodą arba būti sustabdyta.
- Sustabdyta: Programėlė yra foniniame režime, tačiau jos vykdymas yra sustabdytas sistema taupant išteklius.
Perėjimai tarp būsenų ir su jais susiję įvykiai valdomi per sisteminį UIKit (arba SwiftUI) karkasą ir programėlės delegatą (UIApplicationDelegate arba @main Struct SwiftUI).
Pagrindiniai programėlės delegato metodai:
application:didFinishLaunchingWithOptions:: Programėlė paleista.applicationDidBecomeActive:: Programėlė tapo aktyvi.applicationWillResignActive:: Programėlė pereina iš aktyvios į neaktyvią būseną (pvz., įeinančio skambučio metu).applicationDidEnterBackground:: Programėlė pereina į foninį režimą.applicationWillEnterForeground:: Programėlė pereina iš fono į aktyvią.applicationWillTerminate:: Programėlė uždaroma.
Pavyzdys naudojant App Delegate:
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Vyksta paleidus programėlę
print("Programėlė paleista")
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Programėlė tapo aktyvi
print("Programėlė aktyvi")
}
func applicationWillResignActive(_ application: UIApplication) {
// Programėlė pereina iš aktyvios į neaktyvią
print("Programėlė pereina į neaktyvią")
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Programėlė pereina į foninį režimą
print("Programėlė pereina į foną")
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Programėlė pereina iš fono į priekinį
print("Programėlė pereina į priekinį")
}
func applicationWillTerminate(_ application: UIApplication) {
// Programėlė uždaroma
print("Programėlė uždaroma")
}
}
SwiftUI gyvenimo ciklas valdomas @main struktūra ir metodais onAppear, onDisappear, onChange. Taip pat, galima stebėti scenos būseną (ScenePhase):
import SwiftUI
@main
struct MyApp: App {
@Environment(\.scenePhase) var scenePhase // Stebėti scenos būseną
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
// Scena tapo aktyvi
print("Scena tapo aktyvi")
} else if newPhase == .inactive {
// Scena tapo neaktyvi
print("Scena tapo neaktyvi")
} else if newPhase == .background {
// Scena perėjo į foninį režimą
print("Scena perėjo į foninį režimą")
}
}
}
}