深入浅出 iOS 之生命周期
来源:互联网 发布:电脑麦克风软件 编辑:程序博客网 时间:2024/05/01 03:33
深入浅出 iOS 之生命周期
罗朝辉(http://blog.csdn.net/kesalin)
转载请注明出处
iOS应用程序的生命周期相比 Android应用程序的生命周期来说,没那么简明易懂,但是也并不复杂。iOS应用程序的生命周期又根据系统是否支持多线程分为两种:
不支持多线程的iOS4之前的系统以及支持多线程的iOS4及其之后的系统。
iOS4 之前系统,app的生命周期图如下所示:
感谢
从图中我们可以看出:
step 1,点击 app icon 或者从应用程序url(比如在Safari地址栏中输入应用程序url)启动应用程序。
step 2,就会进入 UIApplicationDelegate 的
- (void)applicationDidFinishLaun
或
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOp
step 3, 如果是从 url 启动的则先进入 UIApplicationDelegate 的
- (BOOL)application:(UIApplication *)applicationhandleOpenURL:(NSURL *)url;
然后再跳转到step 4;否则直接跳转到step 4;
step 4,进入 UIApplicationDelegate 的
- (void)applicationDidBecomeActi
step 5,进入应用程序主循环,这时应用程序已经是活动的了,用户可以与应用程序交互。
step 6,在 step 5 状态下,如果按住 home 键或者进行任务切换操作,然后跳转到 step 8;
step 7,在 step 5 状态下,应用程序被中断(如来电,来短信),进入 UIApplicationDelegate的
- (void)applicationWillResignAct
如果用户选择不处理继续留在当前应用程序,则回到 step 4;如果用户选择处理,则跳转到 step 8;
step 8,进入 UIApplicationDelegate 的
- (void)applicationWillTerminate
当前应用程序关闭。
注:这里所说的进入,并非真正的调用该消息,只是走流程。因为 UIApplicationDelegate的方法都是@optional的,实现了则真正执行,没有实现则什么也不做。
iOS4 及其之后的系统,app的生命周期图如下所示:
感谢
从图中我们可以看出,支持多线程之后,情况要复杂得多了。但总体还是有规律可循的,多了一个后台模式。
在app被中断之后,先进入后台:
- (void)applicationDidEnterBackg
在app被中断后继续时,要从后台模式切换到前台:
- (void)applicationWillEnterFore
注意:iOS3.2 下构建的 app也会进入applicationDidEnterBackg
当系统内存不足时,系统会强行关闭那些尚在内存中但处于后台状态的app,以腾出足够的内存供使用。但是那些被强行关闭的程序不会调用任何UIApplicationDelegate的委托方法,只会得到一个KILL信号。当我们长按app icon,强行关闭app,也是同样的处理过程。
在iOS4及之后的系统中,在app运行过程中接电话/查看短信,应用程序不会被关闭,它会进入后台模式。我们可以双击 home键查看所有当前运行着的应用程序。
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- 深入浅出 iOS 之生命周期
- Activity 生命周期
- [iOS]深入浅出 iOS 之生命周期
- [iOS]深入浅出 iOS 之生命周期
- IOS深入浅出 iOS 之生命周期
- IOS之UI 作业
- IOS开发之 ---- I…
- (转) IOS 多线程之GCD
- Andoid activity 生命周期
- java.util.Scanner的用法
- android定制(全)
- javascript_use strict
- android 生命周期
- Android应用程序的生命周期
- 深入浅出 iOS 之生命周期
- ios的生命周期
- makefile
- Comparison of Architec…
- Java_全面总结Java泛型
- Java_泛型的理解与等价实现
- HDU 1179 Ollivanders: Makers of Fine Wands since 382 BC. 最大匹配
- Java_List对象排序通用方法
- Java_int 和integer的区别