iOS12及以前
關(guān)于App的生命周期中的各個方法
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
return true
}
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
//應(yīng)用程序即將被掛起時執(zhí)行
func applicationWillResignActive(_ application: UIApplication) {
log("app即將被掛起")
}
//應(yīng)用程序入活動狀態(tài)時(已經(jīng)被激活)時執(zhí)行
func applicationDidBecomeActive(_ application: UIApplication) {
log("app已經(jīng)被激活")
}
//程序進入后臺的執(zhí)行
func applicationDidEnterBackground(_ application: UIApplication) {
log("app已經(jīng)進入后臺")
}
//應(yīng)用程序即將回到前臺
func applicationWillEnterForeground(_ application: UIApplication) {
log("app即將回到前臺")
}
//當程序?qū)⒁顺鍪潜徽{(diào)用,一般用來數(shù)據(jù)的保存和退出前的整理工作
func applicationWillTerminate(_ application: UIApplication) {
log("app即將被殺死")
}
APP常見的操作相應(yīng)的方法調(diào)用順序
- 啟動app
func application(_ : , willFinishLaunchingWithOptions:)
func application(_ : , didFinishLaunchingWithOptions:)
func applicationDidBecomeActive(_ : )
func application(_ : , didReceiveRemoteNotification:)//接受處理消息通知
- 雙擊home鍵或屏幕上劃使app上移掛起
func applicationWillResignActive(_ :)
- 再次雙擊home鍵歸位或點擊回到該應(yīng)用
func applicationDidBecomeActive(_ :)
- 單擊home鍵使app進入后臺
func applicationWillResignActive(_ :)
func applicationDidEnterBackground(_ :)
- 打開后臺運行的app
func applicationWillEnterForeground(_ :)
func applicationDidBecomeActive(_ :)
- 點擊通知
func applicationWillEnterForeground(_ :)
func application(_ : , didReceiveRemoteNotification:)//接受處理消息通知
func applicationDidBecomeActive(_ :)
- 殺死App進程
func applicationWillTerminate(_ :)
- app切換到其他應(yīng)用之后,再切換回來
func applicationWillEnterForeground(_ :)
func application(_ : , open url: , options: )// 應(yīng)用間傳值 支付或文件傳輸
func applicationDidBecomeActive(_ :)
iOS13
- AppDelegate是負責應(yīng)用程序生命周期的對象,SceneDelegate負責屏幕上顯示的內(nèi)容
- 當處理scene時,對用戶來說window(UIScene),是由UISceneSession管理的
- 在新創(chuàng)建項目時創(chuàng)建的SceneDelegate.swift文件中有幾個默認的方法:
func scene(_:willConnectTo:options:)
func sceneDidDisconnect(_:)//場景進入后臺,但未丟棄
func sceneDidBecomeActive(_:)//場景已回到前臺,重新啟動已暫停或新開始的任務(wù)
//applicationWillTerminate 應(yīng)用被殺死
func sceneWillResignActive(_:)//場景即將進入后臺
func sceneWillEnterForeground(_:)//場景即將進入前臺
func sceneDidEnterBackground(_:)//場景已經(jīng)進入前臺
把視圖層級相關(guān)的方法從 didFinishLanchingWithOptions 遷移到 SceneDelegate 中的 willConnectTo 方法中,有兩個好處:
- 首先可以提高預(yù)覽結(jié)果呈現(xiàn)的速度
- 在應(yīng)用進入后臺時,不會做一些額外的操作,只會做一些必要的操作,使應(yīng)用快速進入睡眠狀態(tài),以節(jié)省耗電