应用的生命周期

     之前对于应用程序的生命周期,和Appdelegate类在应用程序的不同阶段回调的不同方法一直存在这很大疑问,今天下午特意查阅相关资料对此了解。

先从一个程序的启动说起吧


1.Not running(非运行状态) -----》2.inactive(前台非活跃状态)----------》3.Active(前台活跃状态)-------》Background (后台状态) --------》suspended(挂起状态)


       当然这些箭头并不是单向的,不同的场景会有不同的方式

比如说可能从Background (后台状态) ----》inactive(前台非活跃状态);

再比如说从suspended(挂起状态)------》Background (后台状态) ;

当然在发出内存警告,或者用户主动关闭后台程序时会从suspended(挂起状态)---》Not running(非运行状态)。


1.Not running (非运行状态):我们的应用没有运行。

2.Inactive(前台非活跃状态):应用程序正在进入前台,但还不能接受事件的处理。

3.Active(前台活跃状态):应用程序进入前台状态,而且能接受事件的处理

4.Background(后台状态):应用进入后台,依然能够执行代码,但是一旦执行玩可执行的代码,应用马上就会进入我们常说的挂起状态。

5.Suspended(挂起状态):处于该状态的程序,仿佛进入了一种冰冻状态,不能执行代码。且如果系统的内存不够,应用程序会被终止。


    下面我们也说说AppDelegate中那些代理方法,我把项目中的注释在网上翻译了一下,感觉并不怎么好,于是有查阅了我最近买的一本书。感觉还勉强能把那些方法说明白点吧。

//  Copyright (c) 2015年 王志豪imac. All rights reserved.
//

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

//app加载完毕的时候调用(一般只调用一次)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //翻译: 应用程序启动后覆盖点定制
    // Override point for customization after application launch.
    
    //说明: 应用程序启动并进行初始化时调用的方法,这个阶段会实例化根视图控制器
    NSLog(@"程序加载完毕");
    
    
    
    return YES;
}
//程序失去焦点的时候调用(控件不能接受事件)
- (void)applicationWillResignActive:(UIApplication *)application {
    
    
    // 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.
    //翻译:发送时,应用程序是从活动到非活动状态。这可能会出现某些类型的临时中断(如来电或短信)或当用户退出应用程序,它开始过渡到背景状态(后台)
    
    
    // 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.
    //翻译:用这种方法来暂停正在进行的任务,禁用定时器,和油门下的OpenGL ES的帧速率。游戏应该用这种方法来暂停游戏
    
    NSLog(@"程序失去焦点");
    
    //说明 : 应用程序从活跃状态到非活跃状态时调用,这个阶段可以保存UI状态(例如游戏状态)
}


//app进入后台的时候调用(app消失不见)
- (void)applicationDidEnterBackground:(UIApplication *)application {
    // 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.
    //翻译:用这种方法释放共
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值