iOS中的生命周期
iOS开发中,理解各种生命周期是非常重要的基础知识。本文将详细介绍应用生命周期、UIViewController生命周期、UIView生命周期,以及其他常见的生命周期。 应用生命周期(App Lifecycle) 应用状态 iOS应用有五种运行状态: 状态 描述 Not Running 应用未启动或已被系统终止 Inactive 应用在前台运行但未接收事件(如来电、锁屏时的过渡状态) Active 应用在前台运行并接收事件,这是应用的正常运行状态 Background 应用在后台执行代码,通常只有短暂的执行时间 Suspended 应用在后台但不执行代码,系统会在内存不足时自动终止该状态的应用 状态转换图 stateDiagram-v2 [*] --> Not_Running Not_Running --> Inactive : 启动 Inactive --> Active Active --> Background Background --> Inactive Background --> Suspended Suspended --> [*] UIApplicationDelegate 方法(iOS 12及之前) 在iOS 12及之前的版本中,应用生命周期主要通过UIApplicationDelegate协议来管理: // 应用启动完成 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // 初始化配置、第三方SDK等 return true } // 应用即将进入非活动状态 func applicationWillResignActive(_ application: UIApplication) { // 暂停正在进行的任务、禁用定时器 // 游戏应该在此暂停 } // 应用已进入后台 func applicationDidEnterBackground(_ application: UIApplication) { // 释放共享资源、保存用户数据 // 可以请求额外的后台执行时间 } // 应用即将进入前台 func applicationWillEnterForeground(_ application: UIApplication) { // 撤销进入后台时所做的更改 } // 应用已变为活动状态 func applicationDidBecomeActive(_ application: UIApplication) { // 重启被暂停的任务 // 如果应用之前在后台,可以刷新UI } // 应用即将终止 func applicationWillTerminate(_ application: UIApplication) { // 保存数据、清理资源 // 注意:如果应用从Suspended状态被终止,此方法不会被调用 } UISceneDelegate 方法(iOS 13+) 从iOS 13开始,Apple引入了Scene-based生命周期,支持多窗口场景。 ...