美文网首页
iOS appDelegate 生命周期

iOS appDelegate 生命周期

作者: 西博尔 | 来源:发表于2016-07-12 17:43 被阅读236次

    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状态时,若内存紧张,系统也会将程序立即终止以回收内存,此时也不会有任何消息发送。

    相关文章

      网友评论

          本文标题:iOS appDelegate 生命周期

          本文链接:https://www.haomeiwen.com/subject/oohsjttx.html