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

      iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。

    1、应用程序的状态

      Not running  未运行  程序没启动

      Inactive    未激活

      Active     激活

      Backgroud    后台

      Suspended     挂起

    2、程序状态变化图

      

    3、程序运行状态时代理的回调  

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

      告诉代理进程启动但还没进入状态保存
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
         告诉代理启动基本完成程序准备开始运行
      - (void)applicationWillResignActive:(UIApplication *)application
      当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了
      - (void)applicationDidBecomeActive:(UIApplication *)application 
         当应用程序入活动状态执行,这个刚好跟上面那个方法相反
      - (void)applicationDidEnterBackground:(UIApplication *)application
      当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可
      - (void)applicationWillEnterForeground:(UIApplication *)application
      当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。
      - (void)applicationWillTerminate:(UIApplication *)application
      当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。
      - (void)applicationDidFinishLaunching:(UIApplication*)application
      当程序载入后执行

    4、应用程序的生命周期

      

      1、加载应用程序进入前台

      2.加载应用程序进入后台

    3、关于main函数

    main函数是程序启动的入口,在iOS app中,main函数的功能被最小化,它的主要工作都交给了UIKit framework

    1. #import <UIKit/UIKit.h>  
    2.    
    3. int main(int argc, char *argv[])  
    4. {  
    5.     @autoreleasepool {  
    6.         return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));  
    7.     }  
    8. }  

      UIApplicationMain函数有四个参数,你不需要改变这些参数值,不过我们也需要理解这些参数和程序是如何开始的

      argc 和argv参数包含了系统带过来的启动时间。  第三个参数确定了主要应用程序类的名称,这个参数指定为nil,这样UIKit就会使用默认的程序类UIApplication。第四个参数是程序自定义的代理类名,这个类负责系统和代码之间的交互。它一般在Xcode新建项目时会自动生成。

      另外 UIApplicationMain函数加载了程序主界面的文件。虽然这个函数加载了界面文件,但是没有放到应用程序的windows上,你需要在Delegate的 application:willFinishLaunchingWithOptions方法中加载它。

      一个应用程序可以有一个主的storyboard文件或者有一个主的nib文件,但不能同时有两个存在。

    如果程序在启动时没有自动加载主要的故事版或nib文件,你可以在application:willFinishLaunchingWithOptions方法里准备windows的展示。

  • 相关阅读:
    ABP 菜单 修改
    C# 过滤器
    RabbitMQ框架构建系列(三)——Net实现RabbitMQ之Producer
    RabbitMQ系列(二)RabbitMQ基础介绍
    RabbitMQ系列(一)AMPQ协议
    MVC 解读WebConfig
    MVC过滤器特性
    asp.net中使用JQueryEasyUI
    asp.net请求到响应的整个过程
    Redis的下载安装部署(Windows)
  • 原文地址:https://www.cnblogs.com/AliliWl/p/4157186.html
Copyright © 2011-2022 走看看