iOS 前后台切换(APP运行期间生命周期)

iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。 
//开发app,我们要遵循apple公司的一些指导原则,原则如下: 
1、应用程序的状态 
状态如下: 
Not running 未运行 程序没启动 
Inactive 未激活 程序在前台运行,但不能接受事件的处理.当应用要从一个状态切换到另一个不同状态时,中途 过度会短暂停留在此状态. 
Active 激活 程序在前台运行而且接收到了事件。这是应用在前台运行时所处的正常状态. 
Backgroud 后台 程序在后台而且还在执行代码.大多数将要进入 Suspended 状态的应用,会先短暂进入此状态.如果应用请求更多额外的执行时间,该应用会在此状态保持更长一段时间.另外,如果一个应用要求启动时直接进入后台运行,这样的应用会直接从 NotRunning 状态进入 Background 状态,中途不会经过 Inactive 状态.比如,没有界面的应用(当然并不特指没有界面的应用),总之,如果应用直接进入 Background 状态,该应用界面不会被显示出来. 
Suspended 挂起 应用处在后台,并且没有执行任何代码.系统会自动将应用转入该状态,并且不会发出任何通知.当处在该状态时,应用依然驻留内存,但不执行任何程序代码.当系统发生低内存警告时,系统会将出于 Suspended 状态的应用彻底移出内存,从而为前台应用释放更多的内存.

下图是程序状态变化图: 
这里写图片描述

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions // 告诉代理进程启动但还没进入状态保存. 应用程序将要启动时自动调用该方法,该方法是应用程序启动时第一次执行自定义代码的机会.


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions // 告诉代理启动基本完成程序准备开始运行. 应用程序启动时自动调用该方法,开发者可以在该方法中执行初始化相关的代码.


- (void)applicationDidBecomeActive:(UIApplication *)application //应用程序入活动状态执行. 应用在转入前台,并进入活动状态时回调该方法(当应用从启动到进入前台,或从后台转入前台都会调用该方法),可重写该方法执行最后的准备工作.


- (void)applicationWillResignActive:(UIApplication *)application // 当应用程序将要入非活动状态执行(应用正要从前台运行状态离开时将会调用该方法),在此期间,应用程序不接收消息或事件,比如来电话了


- (void)applicationDidEnterBackground:(UIApplication *)application // 用程序正出于 Background 状态,且随时可能进入Suspended 状态时将会调用该方法. 所以要设置后台继续运行,则在这个函数里面设置即可


- (void)applicationWillEnterForeground:(UIApplication *)application//当程序从后台将要重新回到前台,但暂时还没有到达 Active 状态时将会调用该方法. 这个刚好跟上面的那个方法相反。


- (void)applicationWillTerminate:(UIApplication *)application//该应用程序即将被终止时调用该方法,如果应用当前处在 Suspended 状态,此方法将不会被调用..通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。


- (void)applicationDidFinishLaunching:(UIApplication*)application当程序载入后执行



在上面8个方法对应的方法中键入NSLog打印。 
现在启动程序看看执行的顺序: 
启动程序 
lifeCycle[40428:11303] willFinishLaunchingWithOptions 
lifeCycle[40428:11303] didFinishLaunchingWithOptions 
lifeCycle[40428:11303] applicationDidBecomeActive 
按下home键 
lifeCycle[40428:11303] applicationWillResignActive 
lifeCycle[40428:11303] applicationDidEnterBackground 
双击home键,再打开程序 
lifeCycle[40428:11303] applicationWillEnterForeground 
lifeCycle[40428:11303] applicationDidBecomeActive 




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值