Sobes.tech
Junior

Կարող եք պատմել iOS հավելվածի կյանքի ցիկլի մասին?

sobes.tech AI

Պատասխան AI-ից

Հավելվածը անցնում է հետևյալ վիճակների միջով:

  • Չի աշխատում: Հավելվածը չի գործարկվել:
  • Անգործող: Հավելվածը գործարկված է, բայց չի ստանում իրադարձություններ (օրինակ, մուտքային զանգի ժամանակ կամ ֆոնային ռեժիմին անցնելիս):
  • Ակտիվ: Հավելվածը ակտիվ է և լիարժեք գործառնական։ Ստանում է բոլոր իրադարձությունները:
  • Ֆոն: Հավելվածը գտնվում է ֆոնային ռեժիմում։ Կարող է կատարել սահմանափակ կոդ կամ դադարեցվել:
  • Հետաձգված: Հավելվածը ֆոնային ռեժիմում է, բայց նրա կատարմանը համակարգը դադարեցրել է ռեսուրսների խնայողության համար:

Վերափոխումները վիճակների միջև և դրանց հետ կապված իրադարձությունները կառավարում է 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: Կա նաև 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("Տեսարանը անցավ ֆոնային ռեժիմ")
            }
        }
    }
}