UIApplicationDelegate Monitoring App State Changes

来源:互联网 发布:淘宝2.5亿火炬红包 编辑:程序博客网 时间:2024/06/06 08:38

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的验证现在还没有好的验证方法,难道在使用的过程中意外的崩溃了,现在还没有研究清楚