AppDelegate中各方法的执行顺序

流程图

这里写图片描述

流程

1.程序入口

进入main函数,设置AppDelegate为代理

int main(int argc, char * argv[]) {  
      @autoreleasepool {  
          return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));    
    } 
}

原型:
 UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);

principalClassName (主要类名) 和 delegateClassName (委托类名)。

(1) 如果principalClassName是nil,那么它的值将从Info.plist去获取,如果Info.plist没有,则默认为UIApplication。principalClass这个类除了管理整个程序的生命周期之外什么都不做,它只负责监听事件然后交给delegateClass去做。

(2) delegateClass 将在工程新建时实例化一个对象。NSStringFromClass([AppDelegate class])

2.程序完成加载

[AppDelegate application:didFinishLaunchingWithOptions:]

3.创建UIWindows

@property (strong, nonatomic) UIWindow *window;//AppDelete.h自带的属性

4.程序被激活

[AppDelegate applicationDidBecomeActive:]

5.当点击command+shit+h时(针对模拟器,手机是当点击home键)

程序取消激活状态

[AppDelegate applicationWillResignActive:];

//一种是即将进入后台状态会调用此方法,还有可能是当有电话进来或短信进来或锁屏等情况下,这时应用程序挂起进入非活动状态,也就是手机界面还是显示着你当前的应用程序的窗口,只不过被别的任务强制占用了,

程序进入后台

[AppDelegate applicationDidEnterBackground:];

//指当前窗口不是你的App,大多数程序进入这个后台会在这个状态上停留一会,时间到之后会进入挂起状态(Suspended)。如果你程序特殊处理后可以长期处于后台状态也可以运行。

Suspended (挂起):
程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。

6.点击进入工程 程序进入前台

[AppDelegate applicationWillEnterForeground:]

程序被激活

[AppDelegate applicationDidBecomeActive:];

猜你喜欢

转载自blog.csdn.net/qq_39551390/article/details/81320635
今日推荐