zoukankan      html  css  js  c++  java
  • iOS 应用程序的生命周期浅析

    做ipone开发有必要知道iPhone程序的生命周期,说白了就是点击应用图标启动程序到到退出程序,在这个运行的过程中底下的代码到底发生了什么,只有理解生命周期,有利于我们开发人员开发出更好的应用.

    当用户点击一个图片的时候,程序开始运行,从main函数开始:

    int main(int argc, char *argv[]) {

    @autoreleasepool {        

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

        }

    }

    main函数当中:

    UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])这句话的意思是创建一个UIApplication对象,并设置他的委托类,这里第三个参数nil表示默认的是创建一个UIApplication对象,也可以写成UIApplication的子类,紧跟在后面的参数意思是设置UIApplication对象的委托,
    

    在UIApplicationMain内部,实现了类似的代码

    UIApplication *app = [[UIApplication alloc] init];
    UIApplicationDelegate *delegate = [[UIApplicationDelegate alloc] init];
    app.delegate = delegate;

    UIApplication对象类似于总司令,UIApplication对象的委托就类似于他手下,总司令只需指挥,有事手下干,
    
    UIApplication对象创建后直到程序结束前,他以单例的形式存在,可以通过[[UIApplication sharedApplication]delegate]来获取他的代理类,如下面代码
    

    AppDelegate * delegate = (AppDelegate *)[[UIApplicationsharedApplication]delegate];

    UIApplication对象创建好了,其委托也设置好了,下面看看他的委托(手下)都做了些什么事,进入AppDelegate.m中看
    

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

    这个消息类似于jQuery的ready事件,告诉你一切准备就绪,你可以开始了.也可以形象的比喻成,好比总统宣誓就任,你可以决定提议国务卿和内阁组成,以及美联储主席等要职的安排等.

    applicationWillTerminate

    这个预示程序就要结束.

    映射为当前程序王国的总统,就是你的任期到了,要做交接处理了.现在ios的应用可以支持后台运行了,这个方法用的较少,不像早期的时候,当用户点击home的时候,应用程序直接结束了,会调用这个方法,现在点击home后,应用程序转到后台处理

    - (void)applicationWillResignActive:(UIApplication *)application

    说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了

    - (void)applicationDidBecomeActive:(UIApplication *)application

    说明:当应用程序进入活动状态执行,这个刚好跟上面那个方法相反

    - (void)applicationDidEnterBackground:(UIApplication *)application

    说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可,比如用户按下home去去做别的事情,程序进入后台后可以在这个函数中保存一些数据,以便用户再次从后台打开应用时方便接着玩下去,

    - (void)applicationWillEnterForeground:(UIApplication *)application

    说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。

    讲解了上面的一些代理方法后,举些例子说明一下方法被调用的顺序

    当用户点击图标后 调用

    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    2.  applicationDidBecomeActive  程序已经处于活跃状态了,

    程序开着的情况下用户按了home后,程序进入后台调用

    1.applicationWillResignActive

    2.applicationDidEnterBackground

    当用户从后台点击图标再次打开应用

    1.applicationWillEnterForeground

    2.applicationDidBecomeActive

    提示:

    在支持后台执行的程序中,applicationDidEnterBackground:替代了applicationWillTerminate:作为程序快照保存的事件.(现在应用基本都支持后台执行了) 

     
  • 相关阅读:
    Git 基础
    SharePoint 2013 对象模型操作"网站设置"菜单
    SharePoint 2013 隐藏部分Ribbon菜单
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 设置自定义布局页
    SharePoint 2013 "通知我"功能简介
    SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
    SharePoint 禁用本地回环的两个方法
  • 原文地址:https://www.cnblogs.com/LzwBlog/p/5405649.html
Copyright © 2011-2022 走看看