ios应用程序生命周期

转载 2013年12月02日 18:27:59

     开发应用程序都要了解其生命周期,开始接触android时也是从应用程序生命周期开始的,android的应用程序生命周期更多是其组件的生命周期,例如Activity、Service。今天我们接触一下iOS应用程序的生命周期,

       iOS的入口在main.m文件:

  1. int main(int argc, char *argv[])  
  2. {  
  3.     @autoreleasepool {  
  4.         return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));  
  5.     }  
  6. }  


       main函数的两个参数,iOS中没有用到,包括这两个参数是为了与标准ANSI C保持一致。

       UIApplicationMain函数,前两个和main函数一样,重点是后两个,官方说明是这样的:

  1. // If nil is specified for principalClassName, the value for NSPrincipalClass from the Info.plist is used. If there is no  
  2. // NSPrincipalClass key specified, the UIApplication class is used. The delegate class will be instantiated using init.  
  3. UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);  


 

       后两个参数分别表示程序的主要类(principal class)和代理类(delegate class)。如果主要类(principal class)为nil,将从Info.plist中获取,如果Info.plist中不存在对应的key,则默认为UIApplication;如果代理类(delegate class)将在新建工程时创建。

       根据UIApplicationMain函数,程序将进入AppDelegate.m,这个文件是xcode新建工程时自动生成的。下面看一下AppDelegate.m文件,这个关乎着应用程序的生命周期。

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  4.     // Override point for customization after application launch.  
  5.     self.window.backgroundColor = [UIColor whiteColor];  
  6.     [self.window makeKeyAndVisible];  
  7.     NSLog(@"iOS_didFinishLaunchingWithOptions");  
  8.     return YES;  
  9. }  
  10.   
  11. - (void)applicationWillResignActive:(UIApplication *)application  
  12. {  
  13.     // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.  
  14.     // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.  
  15.     NSLog(@"iOS_applicationWillResignActive");  
  16.   
  17. }  
  18.   
  19. - (void)applicationDidEnterBackground:(UIApplication *)application  
  20. {  
  21.     // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.   
  22.     // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.  
  23.     NSLog(@"iOS_applicationDidEnterBackground");  
  24.   
  25. }  
  26.   
  27. - (void)applicationWillEnterForeground:(UIApplication *)application  
  28. {  
  29.     // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.  
  30.     NSLog(@"iOS_applicationWillEnterForeground");  
  31.   
  32. }  
  33.   
  34. - (void)applicationDidBecomeActive:(UIApplication *)application  
  35. {  
  36.     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.  
  37.     NSLog(@"iOS_applicationDidBecomeActive");  
  38.   
  39. }  
  40.   
  41. - (void)applicationWillTerminate:(UIApplication *)application  
  42. {  
  43.     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.  
  44.     NSLog(@"iOS_applicationWillTerminate");  
  45.   
  46. }  


     1、application didFinishLaunchingWithOptions:当应用程序启动时执行,应用程序启动入口,只在应用程序启动时执行一次。若用户直接启动,lauchOptions内无数据,若通过其他方式启动应用,lauchOptions包含对应方式的内容。

     2、applicationWillResignActive:在应用程序将要由活动状态切换到非活动状态时候,要执行的委托调用,如 按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。

     3、applicationDidEnterBackground:在应用程序已进入后台程序时,要执行的委托调用。

     4、applicationWillEnterForeground:在应用程序将要进入前台时(被激活),要执行的委托调用,刚好与applicationWillResignActive 方法相对应。

     5、applicationDidBecomeActive:在应用程序已被激活后,要执行的委托调用,刚好与applicationDidEnterBackground 方法相对应。

     6、applicationWillTerminate:在应用程序要完全推出的时候,要执行的委托调用,这个需要要设置UIApplicationExitsOnSuspend的键值。 

     

初次启动:

2013-05-24 20:20:31.550 LifeIOS[451:c07] iOS_didFinishLaunchingWithOptions

2013-05-24 20:20:31.551 LifeIOS[451:c07] iOS_applicationDidBecomeActive

按下home键:

2013-05-24 20:22:17.349 LifeIOS[451:c07] iOS_applicationWillResignActive

2013-05-24 20:22:17.350 LifeIOS[451:c07] iOS_applicationDidEnterBackground

点击程序图标进入:

2013-05-24 20:22:56.913 LifeIOS[451:c07] iOS_applicationWillEnterForeground

2013-05-24 20:22:56.914 LifeIOS[451:c07] iOS_applicationDidBecomeActive


程序中没有设置UIApplicationExitsOnSuspend的值,程序不会彻底退出。


     看上面iOS的生命周期,是不是和Android的Activity生周期也相似,所以说程序是相通的,对比着学习也是收获最大的。


 

相关文章推荐

深度解析iOS应用程序的生命周期

iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些基本infrastructure给所有App来运行,而你提供自己编写的代码来定制App的外观...

IOS应用程序生命周期

今天开启了iOS新篇章,初步了解了iOS的开发过程,下面说一说iOS开发前需要知道的一个基本知识。 ios应用程序的生命周期 1.首先我们来看一下应用程序的状态 not running  未运...

iOS应用程序执行的生命周期

main函数探究 在iOS项目中有一个main.m的文件,它是程序的入口类,代码如下: #import #import "AppDelegate.h" int main(int ar...

深度解析iOS应用程序的生命周期

http://www.csdn.net/article/2015-06-23/2825023 iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统...

iOS应用程序生命周期&启动周期函数

—程序的生命周期         a.程序的生命周期是指应用程序启动到应用程序结束整个阶段的全过程         b.每一个IOS应用程序都包含一个UIApplication对象,IOS系统通过该U...
  • Theshy
  • Theshy
  • 2015年09月09日 13:20
  • 164

iOS应用程序的生命周期

1.iOS应用程序的状态有五种,分别如下: 1)Not running:app还没有运行 2)Active:app运行在foreground和正在接收事件 3)Inactive:app运行在foreg...

IOS应用程序生命周期详解

第一、 IOS应用程序的五种状态: 1. Not running:应用还没有启动,或者应用正在运行但是途中被系统停止。 2. Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行...

iOS应用程序生命周期

iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受...

iOS应用程序生命周期(前后台切换,应用的各种状态)详解

链接如下: 点击打开链接

iOS应用程序生命周期(前后台切换,应用的各种状态)详解

iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios应用程序生命周期
举报原因:
原因补充:

(最多只允许输入30个字)