標籤:原因 運行 back cep enter 一個 tran inactive change
當您的應用程式啟動(無論是在前台或後台),使用您的應用程式委託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 應用程式啟動時要做什麼