iOS appDelegate 生命周期
2012-11-20 16:11 2942人阅读 评论(0) 收藏 举报
◆- (void)applicationWillResignActive:(UIApplication *)application
说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了
◆- (void)applicationDidBecomeActive:(UIApplication *)application
说明:当应用程序入活动状态执行,这个刚好跟上面那个方法相反
◆- (void)applicationDidEnterBackground:(UIApplication *)application
说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可
◆- (void)applicationWillEnterForeground:(UIApplication *)application
说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。
◆- (void)applicationWillTerminate:(UIApplication *)application
说明:当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。
◆- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
说明:iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止
◆- (void)applicationSignificantTimeChange:(UIApplication*)application
说明:当系统时间发生改变时执行
◆- (void)applicationDidFinishLaunching:(UIApplication*)application
说明:当程序载入后执行
◆- (void)application:(UIApplication)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
说明:当StatusBar框将要变化时执行
◆- (void)application:(UIApplication*)application willChangeStatusBarOrientation:
(UIInterfaceOrientation)newStatusBarOrientation
duration:(NSTimeInterval)duration
说明:当StatusBar框方向将要变化时执行
◆- (BOOL)application:(UIApplication)application handleOpenURL:(NSURL)url
说明:当通过url执行
◆- (void)application:(UIApplication*)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
说明:当StatusBar框方向变化完成后执行
◆- (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame
说明:当StatusBar框变化完成后执行
下图是我总结的一个大概流程图,不是很准确但是基本上也说明了整个过程,仅供参考。
UIApplication状态转换的Delegate消息编号如下:
application:didFinishLaunchingWithOptions:
application:openURL:sourceApplication:annotation:
applicationDidBecomeActive:
applicationWillResignActive:
applicationDidEnterBackground:
applicationWillEnterForeground:
applicationWillTerminate:
则对于下面各种操作Delegate消息的发送顺序为
通过SpringBoard第一次启动,消息顺序为1-3
通过URL第一次启动,消息顺序为1-2-3
运行过程中按Home键,消息顺序为 4-5
若为iOS4.0以下或者Info.plist中设置了UIApplicationExitsOnSuspend,则继续发送消息
7,然后程序终止;
否则根据程序设置进入Background运行模式或者Suspend状态。
运行过程中按锁屏键,消息顺序与按Home键相同,区别在于此时会关闭所有网络连接(iOS5.0+)
运行过程中被短信/电话等中断,则发送消息 4
若用户选择短信/电话,则发送消息 5,后续流程与按Home键相同。
若用户忽略短信/电话,则发送消息 3,回到Foreground运行状态。
运行过程中双击Home键显示任务切换器,会发送消息 4
若选择其他程序或者单击Home键返回到SpringBoard,则发送消息 5,后续流程与按Home键相同。
若再次双击Home键返回APP,则发送消息 3,回到Foreground运行状态。
通过SpringBoard或者任务切换器再次启动时,消息顺序为6-3.
从后台重新返回前台的转换过程中,即6与3消息的中间,在5.1的模拟器中显示的是Default.png,但在真实设备上显示的进入后台的screenshot。
通过URL再次启动时,消息顺序6-2-3.
程序在Background/Suspend状态时,用户双击Home键,在任务切换器中删除此程序时,APP会立即终止,不会有任何消息发送。
当程序在Suspend状态时,若内存紧张,系统也会将程序立即终止以回收内存,此时也不会有任何消息发送。