Junior
Можеш ли да говориш о животном циклусу апликације на iOS?
sobes.tech АИ
Одговор од АИ
Апликацијата преминава низ следните состојби:
- Не работи: Апликацијата не е стартувана.
- Неактивна: Апликацијата е стартувана, но не добива настани (на пример, за време на влезен повик или премин во позадина).
- Активна: Апликацијата е активна и целосно функционална. Добива сите настани.
- Позадина: Апликацијата е во режим на позадина. Може да извршува ограничен код или да биде паузирана.
- Задржана: Апликацијата е во режим на позадина, но нејзиното извршување е прекинато од системот за заштеда на ресурси.
Премините меѓу состојбите и поврзаните со нив настани се управуваат од системскиот рамковен систем UIKit (или SwiftUI) и делегатот на апликацијата (UIApplicationDelegate или @main Struct во SwiftUI).
Клучните методи на делегатот на апликацијата:
application:didFinishLaunchingWithOptions:: Апликацијата е стартувана.applicationDidBecomeActive:: Апликацијата станува активна.applicationWillResignActive:: Апликацијата преминува од активна во неактивна (на пример, при влезен повик).applicationDidEnterBackground:: Апликацијата преминува во режим на позадина.applicationWillEnterForeground:: Апликацијата преминува од позадина во активна.applicationWillTerminate:: Апликацијата се затвора.
Пример за користење во App Delegate:
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Извршува се при стартување на апликацијата
print("Апликацијата е стартувана")
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Апликацијата станува активна
print("Апликацијата е активна")
}
func applicationWillResignActive(_ application: UIApplication) {
// Апликацијата преминува од активна во неактивна
print("Апликацијата преминува во неактивна")
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Апликацијата преминува во позадина
print("Апликацијата премина во позадина")
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Апликацијата преминува од позадина во предна
print("Апликацијата преминува во предна")
}
func applicationWillTerminate(_ application: UIApplication) {
// Апликацијата се затвора
print("Апликацијата се затвора")
}
}
Во SwiftUI, животниот циклус се управува од структура со @main и методи како onAppear, onDisappear, onChange. Исто така, достапни се Environment Values, што овозможуваат следење на состојбата на сцената (ScenePhase).
import SwiftUI
@main
struct MyApp: App {
@Environment(\.scenePhase) var scenePhase // Следење на состојбата на сцената
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
// Сцената стана активна
print("Сцената стана активна")
} else if newPhase == .inactive {
// Сцената стана неактивна
print("Сцената стана неактивна")
} else if newPhase == .background {
// Сцената премина во режим на позадина
print("Сцената премина во позадина")
}
}
}
}