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

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

时间:2016-05-13 14:49:06      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

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
2、应用程序的生命周期
2.1、加载应用程序进入前台

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

标签:

原文地址:http://blog.csdn.net/qxuewei/article/details/51394264

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