Sobes.tech
Junior

iOS ilovasining hayot sikli haqida gapira olasizmi?

sobes.tech AI

AIdan javob

Ilova quyidagi holatlardan o'tadi:

  • Ishlamayapti: Ilova ishga tushirilmagan.
  • Noto'g'ri: Ilova ishga tushirilgan, ammo voqealarni qabul qilmayapti (masalan, kiruvchi qo'ng'iroq yoki fon rejimiga o'tish vaqtida).
  • Faol: Ilova faol va to'liq funksional. Barcha voqealarni oladi.
  • Fon: Ilova fon rejimida. Cheklangan kodni bajarishi yoki to'xtatilishi mumkin.
  • To'xtatilgan: Fon rejimida, ammo uning bajarilishi tizim tomonidan resurslarni tejash uchun to'xtatilgan.

Holatlar o'rtasidagi o'tishlar va ular bilan bog'liq voqealar tizim ramkasi UIKit (yoki SwiftUI) va ilova delegati (UIApplicationDelegate yoki @main Struct SwiftUI) tomonidan boshqariladi.

Ilova delegatining asosiy metodlari:

  • application:didFinishLaunchingWithOptions:: Ilova ishga tushdi.
  • applicationDidBecomeActive:: Ilova faol holatga o'tdi.
  • applicationWillResignActive:: Ilova faol holatdan chiqmoqda (masalan, kiruvchi qo'ng'iroq vaqtida).
  • applicationDidEnterBackground:: Ilova fon rejimiga o'tdi.
  • applicationWillEnterForeground:: Ilova fondan faol holatga o'tdi.
  • applicationWillTerminate:: Ilova yopildi.

App Delegate'da foydalanish misoli:

import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Ilova ishga tushirilganda bajariladi
        print("Ilova ishga tushdi")
        return true
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        // Ilova faol holatga o'tdi
        print("Ilova faol holatda")
    }

    func applicationWillResignActive(_ application: UIApplication) {
        // Ilova faol holatdan chiqmoqda
        print("Ilova faol holatdan chiqmoqda")
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        // Ilova fon rejimiga o'tdi
        print("Ilova fon rejimiga o'tdi")
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
        // Ilova birinchi planga o'tdi
        print("Ilova birinchi planga o'tdi")
    }

    func applicationWillTerminate(_ application: UIApplication) {
        // Ilova yopildi
        print("Ilova yopildi")
    }
}

SwiftUI'da hayot aylanishi @main bilan boshqariladi va onAppear, onDisappear, onChange kabi metodlar bilan nazorat qilinadi. Shuningdek, muhit qiymatlari (Environment Values) sahna holatini (ScenePhase) kuzatishga imkon beradi.

import SwiftUI

@main
struct MyApp: App {
    @Environment(\.scenePhase) var scenePhase // Sahna holatini kuzatish

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .onChange(of: scenePhase) { newPhase in
            if newPhase == .active {
                // Sahna faol holatda
                print("Sahna faol holatda")
            } else if newPhase == .inactive {
                // Sahna inaktiv holatda
                print("Sahna inaktiv holatda")
            } else if newPhase == .background {
                // Sahna fon holatiga o'tdi
                print("Sahna fon holatiga o'tdi")
            }
        }
    }
}