• 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:作为程序快照保存的事件.(现在应用基本都支持后台执行了) 

     
  • 相关阅读:
    Java控制台五子棋编码学习
    Java Web基础
    JavaScript Unit Test with Mocha
    Cross-browser Testing Tool
    GRIDVIEW 控件
    C# .net ACCESS 网页增删改查 --留言板
    在一般处理文件中访问Session需要添加IRequiresSessionState(转载)
    win7 IIS7 发布网站 出现 "处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误"
    http://www.cnblogs.com/hanshuhe/archive/2012/08/30/vss.html
    win 7 配置 IIS
  • 原文地址:https://www.cnblogs.com/LzwBlog/p/5405649.html
Copyright © 2020-2023  润新知