zoukankan      html  css  js  c++  java
  • 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键后,苹果只是简单第提供了一个历史任务列表,而不是人们以为的当前任务列表——这在苹果网站上已经说得很清楚了。至于为什么苹果没有能力为用户提供一个“任务管理器”,我们不得而知。不过有人认为,在多任务中使用挂起代替退出,将减少程序再次启动的时间,节省电量的消耗。


  • 相关阅读:
    Docker可视化管理工具Portainer
    Spring Cloud,Docker书籍资源、优秀博文等记录
    Grafana部署监控docker服务
    Grafana+Prometheus通过node_exporter监控Linux服务器信息
    Prometheus+Grafana+kafka_exporter监控kafka
    k8s gpu 资源设置
    mysql 塞数据
    idea 插件
    ubuntu 升级内核
    清华镜像站安装docker
  • 原文地址:https://www.cnblogs.com/encounter/p/2188458.html
Copyright © 2011-2022 走看看