【IOS 开发学习总结-OC-62】IOS 应用的生命周期

【IOS 开发学习总结-OC-62】IOS 应用的生命周期

IOS 应用的运行有前台运行和后台运行的差异。当应用在前台与后台之间切换的时候,系统会发出通知,回调应用程序委托类的特定方法,我们可以通过重写这些方法来改变应用程序在前台和后台的运行行为。

IOS应用程序的状态

IOS应用程序有如下几种状态;
1. not running:——程序未启动或被系统禁止;
2. inactive(不活动):在前台运行,但不能接手事件处理。——当应用从一个状态切换到另一个状态时,中途过渡会短暂处于这种状态;
3. active:在前台运行且能接收事件。——在前台时的正常状态;
4. background:应用在后台运行,且在执行代码。大多数将要进入挂起 suspended 状态的应用,会短暂进入该状态。若应用请求更多额外的执行时间,该应用会在此状态保持更长一段时间。(如果一个应用要求启动时直接进入后台运行,这样的应用会直接从not running 进入background状态,不经过inactive状态)
5. suspended(挂起):应用处在后天,没有执行任何代码——系统会自动转入该状态,并且不会发出任何通知。(处在该状态时,依然留驻内存,但不执行任何程序代码。当系统发生低内存警告时,系统会将处于该挂起状态的应用彻底移除内存,为前台释放更多内存)

下图为应用状态切换示意图:
这里写图片描述

大部分时候,应用程序的状态的改变都会激发应用程序委托类(app delegate)对应的方法。

协议中定义的这些方法的作用:

  1. - (void)applicationWillResignActive:(UIApplication *)application
    说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了
  2. - (void)applicationDidBecomeActive:(UIApplication *)application
    说明:当应用程序入活动状态执行,这个刚好跟上面那个方法相反
  3. - (void)applicationDidEnterBackground:(UIApplication *)application
    说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可
  4. - (void)applicationWillEnterForeground:(UIApplication *)application
    说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。
  5. - (void)applicationWillTerminate:(UIApplication *)application
    说明:当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。
  6. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
    说明:iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止
  7. - (void)applicationSignificantTimeChange:(UIApplication*)application
    说明:当系统时间发生改变时执行
  8. - (void)applicationDidFinishLaunching:(UIApplication*)application
    说明:当程序载入后执行
  9. - (void)application:(UIApplication)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
    说明࿱
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值