1. 程式人生 > >iOS 應用程序啟動時要做什麽

iOS 應用程序啟動時要做什麽

通過 有關 撤銷 任務 臨時 hone 分享 ext 後臺

當您的應用程序啟動(無論是在前臺或後臺),使用您的應用程序委托application:willFinishLaunchingWithOptions:application:didFinishLaunchingWithOptions:方法來執行以下操作:

  • 檢查啟動選項字典的內容,了解有關啟動應用程序的原因,並做出相應的響應。

  • 初始化您的應用程序的關鍵數據結構。

  • 準備您的應用程序的窗口和視圖以供顯示:

在啟動時,系統會自動加載您的應用程序的main Storyboard加載初始視圖控制器。

application:willFinishLaunchingWithOptions:

application:didFinishLaunchingWithOptions:方法應該始終盡可能輕量級,以減少您的應用程序的啟動時間。應用程序預計將啟動,初始化UIWindow,並在不到5秒鐘內開始處理事件。如果應用程序沒有及時完成其啟動周期,則系統會將其殺死而無法響應。因此,任何可能會減慢啟動速度的任務(例如訪問網絡)都應該安排在輔助線程上執行。

當您的應用程序啟動時,它將從未運行狀態轉移到活動狀態或後臺狀態,並在非活動狀態中短暫轉換。作為啟動周期的一部分,系統為您的應用程序創建一個進程和主線程,並main在該主線程上調用您的應用程序的功能。mainXcode項目附帶的默認函數會立即將控制權移交給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 應用程序啟動時要做什麽