美文网首页
iOS:App的启动与Application的简介

iOS:App的启动与Application的简介

作者: 走在字里行间 | 来源:发表于2017-02-10 11:34 被阅读96次

    程序的启动原理

    1、main函数

    2、UIApplicationMain

    创建UIApplication对象

    创建UIApplication的delegate对象

    main函数会执行一个UIApplicationMain这个函数,intUIApplicationMain(int argc,char*argv[],NSString *principalClassName,NSString *delegateClassName);argc、argv:直接传递给UIApplicationMain进行相关处理即可

    principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或者是子类)。如果是nil,则用UIApplication类作为默认值。

    delegateClassName:指定应用程序的代理类,该类必须准守ApplicationDelegate协议

    UIApplicationMain函数或根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性。

    接着会创建应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序调用delegate对象的application:didFinishLaunchingWithOptions方法)

    3、delegate对象开始处理(监听)系统事件(没有storyboard)

    程序启动完毕的时候,就会调用代理的application:didFinishLaunchingWithOptions方法

    在application:didFinishLaunchingWithOptions;中创建UIWindow

    创建和设置UIWindow中的rootViewController

    显示窗口

    补充 Appdelegate中的代理方法

    当程序启动完毕的时候就会调用(系统自动调用)application:didFinishLaunchingWithOptions

    即将失去活动状态的时候调用(失去焦点,不可交互)applicationWillResignActive

    重新获取焦点(能够和用户交互)applicationDidBecomeActive

    应用进入后台的时候调用(一般在该方法中保存应用的数据和状态)applicationDidEnterBackground

    应用即将进入前台的时候调用(一般在该方法中恢复应用的数据状态和数据)applicationWillEnterForeground

    应用程序即将被销毁的时候调用该方法(程序处于挂起的时候无法调用该方法)applicationWillTerminate

    应用程序接收到内存警告的时候调用(一般在该方法中释放掉不需要的内存)applicationDidReceiveMemoryWarning

    4、根据info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)

    创建UIWindow

    创建和设置UIWindow的rootViewController

    显示窗口

    总结

    程序启动的时候 Not runing —>Inactive(前台非活跃状态) —>Active(前台活跃状态)

    Not runing —>Inactive 调用application:didFinishLaunchingWithOptions方法 发出UIApplication-DidFinishLaunchingNotification通知

    Inactive —>Active 调用applicationDidBecomeActive方法 发出 UIApplicationDidBecomeActive - Notification 通知

    点击home键 Active —>Inactive —>Background —>Suspended

    Active —>Inactive 调用 applicationWillResignActive 方法发出 UIApplicationWillResignActive -Notification 通知

    Inactive —>Background 从非活跃状态进入到后台

    Background —>Suspended 调用applicationDidEnterBackground方法 发送 UIApplicationDidEnterBackground-Notfication 通知

    程序挂起到重新运行场景Suspended —>Background —>Inactive —>Active

    Suspended —>Background 调用 applicationWillEnterForeground 方法 发出UIApplicationWillEnterBacakgroundNotfication 通知

    Background —>Inactive 从后台状态进入到非活跃状态

    Inactive —>Active调用 applicationDidBecomeActive 方法 发送 UIApplicationDidBecomeActiveNotfication通知

    求不喜勿喷,有错的地方请各位指出,看到后会立刻改正

    相关文章

      网友评论

          本文标题:iOS:App的启动与Application的简介

          本文链接:https://www.haomeiwen.com/subject/dfsgittx.html