標籤:
應用代理類(AppDelegate):
AppDelegate類中定義了app進入不同生命週期(包括app啟動動、閑置、進入後台、進入前台、啟用、完全退出)時的回調方法。實際上在app啟動時,app會自動執行一個叫main的入口函數,它通過調用UIApplicationMain函數來建立出AppDelegate類執行個體,並委託其實現app在不同生命週期的定製行為。
應用程式的狀態如下:
Not running(未運行)程式沒啟動
Inactive(未啟用)程式在前台運行,不過沒有接收到事件。在沒有事件處理情況下程式通常停留在這個狀態
Active(啟用)程式在前台運行而且接收到了事件。這也是前台的一個正常的模式
Backgroud(後台)程式在後台而且能執行代碼,大多數程式進入這個狀態後會在在這個狀態上停留一會。時間到之後會進入掛起狀態(Suspended)。有的程式經過特殊的請求後可以長期處於Backgroud狀態
Suspended(掛起)程式在後台不能執行代碼。系統會自動把程式變成這個狀態而且不會發出通知。當掛起時,程式還是停留在記憶體中的,當系統記憶體低時,系統就把掛起的程式清除掉,為前景程式提供更多的記憶體。
各個程式運行狀態時代理的回調:
1、application didFinishLaunchingWithOptions:當應用程式啟動時執行,應用程式啟動入口,只在應用程式啟動時執行一次。若使用者直接啟動,lauchOptions內無資料,若通過其他方式啟動應用,lauchOptions包含對應方式的內容。
2、applicationWillResignActive:在應用程式將要由活動狀態切換到非使用中時候,要執行的委託調用,如 按下 home 按鈕,返回主畫面,或全屏之間切換應用程式等。
3、applicationDidEnterBackground:在應用程式已進入背景程式時,要執行的委託調用。
4、applicationWillEnterForeground:在應用程式將要進入前台時(被啟用),要執行的委託調用,剛好與applicationWillResignActive 方法相對應。
5、applicationDidBecomeActive:在應用程式已被啟用後,要執行的委託調用,剛好與applicationDidEnterBackground 方法相對應。
6、applicationWillTerminate:在應用程式要完全推出的時候,要執行的委託調用,這個需要要設定UIApplicationExitsOnSuspend的索引值。
SwiftIOSAPP生命週期