iOS 應用程序啟動時要做什麽
當您的應用程序啟動(無論是在前臺或後臺),使用您的應用程序委托application:willFinishLaunchingWithOptions:
和application:didFinishLaunchingWithOptions:
方法來執行以下操作:
-
檢查啟動選項字典的內容,了解有關啟動應用程序的原因,並做出相應的響應。
-
初始化您的應用程序的關鍵數據結構。
-
準備您的應用程序的窗口和視圖以供顯示:
在啟動時,系統會自動加載您的應用程序的main Storyboard加載初始視圖控制器。
application:willFinishLaunchingWithOptions:
application:didFinishLaunchingWithOptions:
方法應該始終盡可能輕量級,以減少您的應用程序的啟動時間。應用程序預計將啟動,初始化UIWindow,並在不到5秒鐘內開始處理事件。如果應用程序沒有及時完成其啟動周期,則系統會將其殺死而無法響應。因此,任何可能會減慢啟動速度的任務(例如訪問網絡)都應該安排在輔助線程上執行。
當您的應用程序啟動時,它將從未運行狀態轉移到活動狀態或後臺狀態,並在非活動狀態中短暫轉換。作為啟動周期的一部分,系統為您的應用程序創建一個進程和主線程,並main
在該主線程上調用您的應用程序的功能。main
Xcode項目附帶的默認函數會立即將控制權移交給UIKit框架,UIKit框架完成初始化應用程序並準備運行的大部分工
下圖顯示了將應用程序啟動到前臺時發生的事件序列,包括調用的應用程序委托方法。
當您的應用程序啟動到後臺時(通常是為了處理某種類型的後臺事件),啟動周期會稍微改變為下圖所示的狀態。主要區別在於,您的應用不是處於活動狀態,而是進入後臺狀態以處理該事件,並可能在此之後的某個時刻暫停。在啟動到後臺時,系統仍會加載應用的用戶界面文件,但不會顯示應用的窗口。
要確定您的應用程序是啟動到前臺還是後臺,請在您的或委托方法中檢查applicationState
共享UIApplication
對象的屬性。當應用程序啟動到前臺時,此屬性包含該值。當應用程序啟動到後臺時,該屬性將包含該值。您可以使用此差異來相應地調整委托方法的啟動時間行為。
application:willFinishLaunchingWithOptions:
application:didFinishLaunchingWithOptions:
UIApplicationStateInactive
UIApplicationStateBackground
應對臨時中斷
當發生基於警報的中斷(例如來電)時,應用程序暫時移至不活動狀態,以便系統可以提示用戶如何進行。該應用程序保持這種狀態,直到用戶解散警報。此時,應用程序將返回到活動狀態或移動到後臺狀態。
顯示了發生基於警報的中斷時,通過您的應用程序發生的事件流。
當您的應用程序進入前臺時該怎麽做
回到前臺,您的應用程序有機會重新啟動它移到後臺時停止的任務。移動到前臺時出現的步驟如圖4-4所示。該applicationWillEnterForeground:
方法應該撤銷在您的applicationDidEnterBackground:
方法中完成的任何操作,並且該applicationDidBecomeActive:
方法應該繼續執行與啟動時相同的激活任務。
以上查閱與蘋果官方文檔, 原文地址:
https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html#//apple_ref/doc/uid/TP40007072-CH8-SW2
iOS 應用程序啟動時要做什麽