天天看點

UIApplicationDelegate Monitoring App State Changes

UIApplicationDelegate 有如下的函數來監視整個應用的狀态變化的

  • – application:willFinishLaunchingWithOptions:

  • – application:didFinishLaunchingWithOptions:

  • – applicationDidBecomeActive:

  • – applicationWillResignActive:

  • – applicationDidEnterBackground:

  • – applicationWillEnterForeground:

  • – applicationWillTerminate:

  • – applicationDidFinishLaunching:

具體相關的可以參考:https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40006786-CH3-DontLinkElementID_3

根據文檔的說明:

對于– applicationDidFinishLaunching:在iOS3.0以前(不包括3.0)才會使用,在iOS3.0及其以後都是使用– application:didFinishLaunchingWithOptions:來代替

是以,上述的8個函數就用7個狀态來表示

狀态1:将要完成加載:willFinishLaunching(隻是在iOS6及其以後的版本才有這個函數)

狀态2:已經完成加載:didFinishLaunching

狀态3:将要失去焦點(将要進入背景模式):willResignActive

狀态4:已經進入背景模式(已經失去焦點):didEnterBackground

狀态5:将要進入前台模式(将要成為焦點):willEnterForeground

狀态6:已經成為焦點(已經進入前台模式):didBecomeActive

狀态7:程式将要結束:willTerminate

如下的事件:

事件1. 當程式啟動的時候,狀态的變化

開始--->狀态1----->狀态2---->狀态6

事件2. 程式在前台的時候,按下Home鍵,狀态的變化

狀态6--->狀态3----->狀态4

事件3. 程式在前台的時候,按下鎖屏鍵

同僚件2:狀态6--->狀态3----->狀态4

事件4. 在事件3結束後,解鎖

狀态4--->狀态5----->狀态6

事件5. 程式在前台的時候,自動鎖屏了

同僚件2:狀态6--->狀态3----->狀态4

事件6. 狀态7的驗證現在還沒有好的驗證方法,難道在使用的過程中意外的崩潰了,現在還沒有研究清楚