刚买了关东升老师的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是程序运行完代码后进入挂起状态)
在这种情况下系统不会调用任何方法;