图解ios程序生命周期

图解ios程序生命周期

  应用程序启动后状态有Active、Inactive、Background、Suspended、Not running这5种状态,几种状态的转换见下图:

  在AppDelegate中实现app状态变化时的回调函数,在 app状态发生变化时,系统会执行相应回调:

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 
    告诉代理进程启动但还没进入状态保存
-
(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 
   告诉代理启动基本完成程序准备开始运行
-
(void)applicationWillResignActive:(UIApplication *)application
 
  当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了
-
(void)applicationDidBecomeActive:(UIApplication *)application 
 
   当应用程序入活动状态执行,这个刚好跟上面那个方法相反
-
(void)applicationDidEnterBackground:(UIApplication *)application
 
  当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可
-
(void)applicationWillEnterForeground:(UIApplication *)application
       当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。
-
(void)applicationWillTerminate:(UIApplication *)application
       当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。
-
(void)applicationDidFinishLaunching:(UIApplication*)application
       当程序载入后执行

1.程序启动时:

  如图所示,当App启动时,首先由not running状态切换到inactive状态,此时调用application:didFinishLaunchingWithOptions:方法;然后由inactive状态切换到active状态,此时调用applicationDidBecomeActive:方法。

2.程序进入后台

  进入后台后,如果没有要求此app在后台运行(可以后台运行的几种情况在第一张图上有说明),那么程序的状态(比如什么时候suspend什么时候not running)完全有系统控制.

  当切换到另一个App时,由状态active切换到inactive,此时调用applicationWillResignActive:方法;然后从inactive状态切换到running状态,此时调用applicationDidEnterBackground:方法。

3.程序返回前台

  而当切换回本来的App时,由running状态切换到inactive状态,此时调用applicationWillEnterForeground:方法,然后由inactive状态切换到active状态,调用applicationDidBecomeActive:方法。

4.中断

当App发生中断时(来电话或拉出上面工具栏),由active状态切换到inactive状态,此时调用applicationWillResignActive:方法。

5.锁屏

  当手机锁屏时,由状态active切换到inactive,此时调用applicationWillResignActive:;然后再由inactive状态切换到running状态,此时调用applicationDidEnterBackground:方法。

6.程序终止

  程序只要符合以下情况之一,只要进入后台或挂起状态就会终止:

(1)iOS4.0以前的系统,app是基于iOS4.0之前系统开发的,设备不支持多任务。

(2)在Info.plist文件中,程序包含了 UIApplicationExitsOnSuspend  键。

(3)系统资源不足时系统调度终止app。

  app如果终止了  ,系统会调用app的代理的方法 applicationWillTerminate,这样可以让你可以做一些清理工作。你可以保存一些数据或app的状态。这个方法也有5秒钟的限制。超时后方法会返回程序从内存中清除。

  注意:用户可以手工关闭应用程序。

参考

1. iOS应用程序生命周期(前后台切换,应用的各种状态)详解

2. 深度解析iOS应用程序的生命周期

3. iOS 7 的新后台多任务(multitasking)机制是如何工作的

  

时间: 2024-10-05 06:16:41

图解ios程序生命周期的相关文章

IOS 程序生命周期的原理

一.UIApplication 生命周期 每一个IOS应用程序都包含一个UIApplication对象,IOS系统通过UIApplication对象监控应用程序生命周期全过程.每一个应用程序都会为UIApplication对象指定一个代理对象,该代理对象用于处理UIApplication对象监控生命周期事件. 二.IOS应用程序拥有5种状态 Not Running: 应用程序还没有启动,或者应用程序正在运行,中途被系统停止. Inactive:应用程序正在前台运行,但是,并不接收事件.(当前或者

iOS程序生命周期 AppDelegate

iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的. iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的.在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验.//开发app,我们要遵循apple公司的一些指导原则,原则如下:1.应用程序的状态状态如下:Not running  未运行  程序没启动Inactive          未激活        程序在前台运行,不过没有接收到事件.在没有事件处理

IOS应用程序生命周期

1.应用程序状态 1.1.Not running-未运行 程序没有启动 1.2.Inactive-未激活 程序在前台运行,不过没有接受到事件,在没有事件处理下程序同城停留在这个状态 1.3.Active-激活 程序在前台运行并且接受到了事件,这也是前台的一个正常的模式 1.4.Background-后台 程序在后台而且能执行代码,大多数程序进入这个状态后会在这个状态停留一会,时间到了之后会进入挂起状态,有的程序经过特殊的请求后可以长期处于Background状态 1.5.Suspended-挂起

[转]iOS应用程序生命周期(前后台切换,应用的各种状态)详解

转载地址:http://blog.csdn.net/totogo2010/article/details/8048652 iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的. iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的.在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验. //开发app,我们要遵循apple公司的一些指导原则,原则如下: 1.应用程序的状态 状态如下: Not running

ASP.NET应用程序生命周期和ASPX页面生命周期图解

ASP.NET应用程序生命周期和ASPX页面生命周期图解,布布扣,bubuko.com

iOS iOS应用程序生命周期(前后台切换,应用的各种状态)详解

iOS应用程序生命周期(前后台切换,应用的各种状态)详解 http://blog.csdn.net/totogo2010/article/details/8048652

转:iOS应用程序生命周期(前后台切换,应用的各种状态)详解

iOS应用程序生命周期(前后台切换,应用的各种状态)详解 分类: iOS开发进阶2012-10-08 15:35 42691人阅读 评论(30) 收藏 举报 iosapplication任务animationtimerxcode 目录(?)[+] iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的. iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的.在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验.

【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

(1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器可以自定义不同的状态栏如下: -(BOOL)prefersStatusBarHidden{ } -(UIStatusBarStyle)preferredStatusBarStyle{ } --如果我们需要交给UIApplication对象管理(iOS6之前就是),则需要如下设置: 先在info.plist中把默认的设置修改掉: 然后直接用如下代码即可: - (void)view

IOS Application生命周期

应用程序的状态 Not running(未运行):程序没启动 Inactive(未激活):程序在前台运行,不过没有接收到事件.在没有事件处理情况下程序通常停留在这个状态 Active(激活):程序在前台运行而且接收到了事件.这也是前台的一个正常的模式 Backgroud(后台):序在后台而且能执行代码,大多数程序进入这个后台后会在在这个状态上停留一会.时间到之后会进入挂起状态(Suspended).有的程序经过特殊的请求后可以长期处于Backgroud状态 Suspended(挂起):程序在后台