• iOS多任务:suspend VS terminate



    iOS4.0开始支持multitasking,这是一件令人振奋的消息。但对程序员们来说,却未必如此。

    苹果至今不在SDK中提供退出应用程序的API。要退出程序,必须通过Home键。但从iOS4.0开始,按Home键iOS用suspend(挂起)代替了terminate(退出)。

    这个情况可以通过Info.plist设置改变,如果你将 UIApplicationExitsOnSuspend或者Applicationdos not run in background设置为true(注意不是YES),那么当按下Home键后,程序就会退出而不是挂起。

    例如,在程序OpenUrl中,我们在程序一启动,就调用Safari打开一个Url,然后OpenUrl会退出。

    我们首先把Application dos not run in background设置为true,然后分别在程序挂起和退出时打印一些东西:

    //程序挂起时调用

    - (void)applicationDidEnterBackground:(UIApplication *)application {

    NSLog(@"App will enterbackground.");

    }

    //程序退出时调用

    - (void)applicationWillTerminate:(UIApplication *)application {

    NSLog(@"App willTerminate.");

    }

    然后运行程序,控制台输出如下:

    2011-08-23 15:46:42.499 OpenUrl[2492:207] App willenter background.

    2011-08-2315:46:42.501 OpenUrl[2492:207] App will Terminate.

    这说明当Safari打开时,程序退到后台运行,然后iOS把程序关闭了。

    如果你将Application dos not run in background设置为false,则控制台只会输出一行:

    2011-08-2315:48:54.183 OpenUrl[2506:207] App will enter background.

    这说明Safari打开后,OpenUrl程序进入后台,但并没有退出(挂起)。

    当然,如果你连续按下两次Home键,仍然看到的是两个程序:

    http://img.ph.126.net/DUmKt70DXB6Q4ncgKVIBVQ==/1133781206207424110.png

    这不值得大惊小怪,因为按两次Home键后,苹果只是简单第提供了一个历史任务列表,而不是人们以为的当前任务列表——这在苹果网站上已经说得很清楚了。至于为什么苹果没有能力为用户提供一个“任务管理器”,我们不得而知。不过有人认为,在多任务中使用挂起代替退出,将减少程序再次启动的时间,节省电量的消耗。


  • 相关阅读:
    蚂蚁森林自动收能量
    え速记
    い 速记
    あ速记
    五十音图
    Leetcode 215. 数组中的第K个最大元素 排序 优先队列
    动手学深度学习 | 第二部分完结竞赛:图片分类 | 29
    动手学深度学习 | 残差网络 ResNet | 27
    动手学深度学习 | 批量归一化 | 26
    动手学深度学习 | 含并行连结的网络GoogLeNet/Inception V3 | 25
  • 原文地址:https://www.cnblogs.com/encounter/p/2188458.html
Copyright © 2020-2023  润新知