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. ასევე, ხელმისაწვდომია გარემოს მნიშვნელობები (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("სცენა გადავიდა ფონის რეჟიმში")
}
}
}
}