码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 应用程序生命周期

时间:2014-09-01 22:48:43      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:应用程序   ios   

刚买了关东升老师的ios书,来记录一下自己感觉有用的东西;

作为应用程序的委托对象,Appdeletage在应用程序的生命周期的不同阶段会调用不同的方法。

首先说一下ios应用的五中状态:

  • Not Running (非运行状态)应用程序未运行或者已经终止
  • Inactive (前台非活动状态)应用程序进入前台状态,但是还不能接受事件处理
  • Active (前台活动状态)应用程序进入前台,能接受事件
  • Background (后台状态)应用程序进入后台,依然能够执行代码。如果有可执行代码就会继续执行,如果没有,会进入挂起状态
  • Suspended (挂起状态) 不能执行代码,如果系统内存不够应用程序会被终止

ios应用程序在这些状态转换过程中,iOS系统会调用Appdelegate的一些方法,并且发送通知。

这里主要说一些主要的方法;

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

程序启动并进行初始化是调用

- (void)applicationWillResignActive:(UIApplication *)application 

程序从活动状态进入非活动状态的时候调用


- (void)applicationDidEnterBackground:(UIApplication *)application

程序进入后台时调用该方法


- (void)applicationWillEnterForeground:(UIApplication *)application

程序进入前台但是还未处于活动状态时调用该方法


- (void)applicationDidBecomeActive:(UIApplication *)application

程序进入前台并处于活动状态时调用


- (void)applicationWillTerminate:(UIApplication *)application

应用程序被终止时调用


以上这6个方法都是在Appdegate.m中自动生成的;

非运行状态---启动场景

程序启动的时候共经历3个状态
Not running->Inactive->active
在Not running->Inactive 阶段 系统会调用
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
在Inactive->active阶段 系统会调用
(void)applicationDidBecomeActive:(UIApplication *)application

点击Home键---应用退出场景

这种情况下又分两种情况:
1、可以在后台挂起
2、不能在回台挂起
先说第一种情况共经历4种状态
Active->Inactive->background->Suspended
Active->Inactive 阶段调用
(void)applicationWillResignActive:(UIApplication *)application 
Inactive->background阶段
这个阶段不会调用上面列出的方法
background->Suspended阶段调用
(void)applicationDidEnterBackground:(UIApplication *)application

第二种情况
Active->Inactive->background->Suspended->Not running 五中状态
Active->Inactive 系统不会调用上述方法,这里与第一种情况不同
Inactive->background阶段
这个阶段不会调用上面列出的方法
background->Suspended阶段调用
(void)applicationDidEnterBackground:(UIApplication *)application
Suspended->Not running 调用
(void)applicationWillTerminate:(UIApplication *)application

挂起重新运行场景

Suspended->background->Inactive->Active
Suspended->background 这里不会调用上述方法
background->Inactive调用
applicationWillEnterForeground:(UIApplication *)application
Inactive->Active调用
(void)applicationDidBecomeActive:(UIApplication *)application

内存清除---应用场景终止

该应用程序处于后台运行(挂起状态),如果系统发出低内存警告的时候,为了满足其他应用对内存的需求,就会清除内存终止程序。
background->Suspended->Not running(background->Suspended是程序运行完代码后进入挂起状态)
在这种情况下系统不会调用任何方法;

iOS 应用程序生命周期

标签:应用程序   ios   

原文地址:http://blog.csdn.net/u010123208/article/details/38986627

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!