简单来说,这玩意是对开发者友好,但对设备不友好的(可能会偷偷摸摸地占用流量和电量)。
对用户来说,如果你带宽够,对发热不敏感的话,会得到更好的应用体验。

从 iOS 4 开始,应用就可以在退到后台后,继续运行一小段时间了(10 分钟)。
此外还可以把自己声明为需要在后台运行,就能不限时地运行了。不过限制为播放音乐、使用 GPS 等。值得一提的是,有的应用为了达到后台不限时运行的目的,在后台播放无声的音乐(审核不一定会被发现)。
iOS 5 开始又多了一种类型:下载报刊杂志。
然后 iOS 7 则可以下载各种玩意和定时抓取。

不过对于开发者来说,iOS 7 还有 2 个需要注意的区别:

  1. iOS 7 以前,应用进入后台继续运行时,如果用户锁屏了,那么 iOS 会等待应用运行完,才进入睡眠状态。
    而在 iOS 7 上,系统会很快进入睡眠状态,那些后台应用也就暂停了。如果收到事件被唤醒(例如定时事件、推送、位置更新等),后台应用才能继续运行一会。
    因为处理过程变成了断断续续的,因此下载时也要使用 NSURLSession 来处理(即下文中的 Background Transfer Service)。
  2. 由于 App Switcher 的存在,应用即使在后台,用户仍然能看到它在退出前的快照。如果有什么不可见人的东西(例如刚拍的艳照啦,劲爆的聊天内容啦,银行卡密码什么的),就处理下界面来隐藏吧。

顺便再介绍下三个新东西:

  1. Background Fetch。可以设置应用在后台至少隔多久时间就去抓取一下更新(注意是至少,不保证达到这个频率)。以微博来举例,如果用户的微博被别人评论了,iOS 7 之前得让微博的服务器来推送一条通知,用户接收到后,进入该条微博,等待加载该评论;而 iOS 7 上则可以让用户每隔一定时间(如一分钟)查询一下有没有更新,发现有则下载更新的内容,然后发送一条本地通知给用户,用户接收到后,进入该条微博,显示在后台下载好的评论内容。如果需要的话,连 timeline 都能给你提前更新了。
  2. 很显然,这种做法体验更好,但更费流量和电池。
  3. Silent Remote Notification。iOS 7 之前的推送会直接弹出一个对话框,用户确认后才会进入应用;而 iOS 7 上则可以不弹出对话框,而是直接通知应用去下载更新,等下完后再发送本地通知给用户,这样用户进入应用后,就能直接看到更新的内容了。
    这种做法就比前者好些,不需要在后台轮询了。只是用户如果对更新内容不感兴趣,也会被强制下载。
    为了避免被滥用,这种推送有频率限制(每小时几次),所以推送 QQ、微信这类经常被刷屏的消息肯定没戏。
  4. Background Transfer Service。iOS 7 之前的应用可以在后台继续运行一段时间来下载,但如果因为各种原因而导致应用被退出了(被用户杀掉,内存不足或超时被系统杀掉等),那么下载是得不到保证的。iOS 7 的后台传输服务则可以让系统去下载,出错或下完后通知并唤醒应用来处理。
    对用户来说的好处就是,想离线缓存影片时,可以让优酷之类的应用在后台下载,自己放点音乐看看漫画,而不用傻傻地开着优酷等待下完。上传当然也是支持的,基友再也不用担心你没空发小电影什么的了。此外,1 和 2 里提到的后台下载,也都会用到 3。
    为了避免浪费流量,该服务只会在 WiFi 环境下才进行传输。

需要特别注意的是:应用被以上三类唤醒时,只被给予几秒钟时间来处理更新。

要总结的话,我预测下一代 iPhone 待机时间会减少,实际可用时间减少,但官方标称的使用时间不变。

出处:知乎

本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。                                  

iOS- iOS 7 的后台多任务 (Multitasking) 对比之前的异同、具体机制、变化的更多相关文章

  1. 支付宝APP支付IOS手机端java后台版

    版权声明:http://blog.csdn.net/u012131769/article/details/76639527#t8 转载:http://blog.csdn.net/u012131769/ ...

  2. [IOS]IOS UI指南

    [IOS]IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻 ...

  3. iOS 9之分屏多任务(Split View)

    金田(github 示例源码) 多任务(multitasking)算是iOS9中最引人瞩目的核心新特性了,之前越狱版用户就用过类似的插件,微软的 苏菲 (Windows Surface)系列也有分屏多 ...

  4. ios开发-程序压后台后,悄悄的抓取数据~~

    我们使用某个app的时候,当我们将程序压到后台之后,我们希望它还能从服务器抓取一些数据,类似微博,微信,qq这些程序压后台 之后,我们依然能看到icon上显示未读数量.但是ios系统是伪多任务操作系统 ...

  5. iOS多线程之GCD、OperationQueue 对比和实践记录

    [toc] 简介      在计算的早期,计算机可以执行的最大工作量是由 CPU 的时钟速度决定的.但是随着技术的进步和处理器设计的紧凑化,热量和其他物理约束开始限制处理器的最大时钟速度.因此,芯片制 ...

  6. WP与IOS与Android的后台机制相同与不同

    简介: 1.Windows Phone与IOS的后台机制是 后台挂起 + 待机 + 通知代理 这样一种模式.也就是说一个程序在后台的时候,处于一种挂起状态,程序不能访问CPU.网络和其他系统资源,除了 ...

  7. ios实现程序切入后台,实现后台任务 (转自)

    ,项目需求,是程序home键切入后台,3分钟后退出登陆, 首先,iOS 会再持续切入后台,给我们5秒钟的时间去处理相关数据,5秒后,程序不会再执行任何代码,处于挂起状态. - (void)applic ...

  8. IOS网络请求框架AFNetworking和ASIHttpRequest对比

    ASI基于CFNetwork框架开发,而AFN基于NSURL. ASI更底层,请求使用创建CFHTTPMessageRef进行,使用NSOperationQueue进行管理,ASIHTTPReques ...

  9. 原创翻译:iOS 应用程序 蓝牙后台运行

    默认情况下,普通的CoreBluetooth 任务中的大多数,无论是Central还是peripheral ,在后台或者挂起状况下都是无法进行的.也就是说,你可以通过宣布你的应用程序支持后台处理模式来 ...

随机推荐

  1. JSP + servlet 源码 实现文件的上传

    JSP页面 upLoad.jsp _________________________________ <%@ page language="java" import=&quo ...

  2. 集合之HashMap、Hashtable

    HashMap 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Hashtabl ...

  3. 5、GDB调试工具的使用

    GDB是GNU发布的一款功能强大的程序调试工具.GDB主要完成下面三个方面的功能: 1.启动被调试程序. 2.让被调试的程序在指定的位置停住. 3.当程序被停住时,可以检查程序状态(如变量值). #i ...

  4. Docker开篇之HelloWorld

    按照程序世界的惯例,我们应该以HelloWorld的程序为起点开始介绍.那么接下来我们就看看Docker的HelloWorld是如何运行的. 安装 Docker CE 由于我的系统是OSX,个人推荐使 ...

  5. 蓝桥杯 算法训练 K好数

    参考:https://blog.csdn.net/jjmjeffrey/article/details/69298110 https://www.cnblogs.com/TWS-YIFEI/p/634 ...

  6. 贪心算法之Dijkstra

    贪心算法的主要思想就是通过不断求解局部最优解,最后求出最优解或者最优解的近似值,不能保证一定为最优解. Dijistra算法,选取没有选择过的点到已经选择过得点组成的集合中最短的距离的点.然后更新已选 ...

  7. 通过c#操作word文档的其他方式

    如果不嫌麻烦可以选择MS的word组件,因为过于庞大复杂.一般都是在无法满足要求的情况下才采用此种方式 参考链接:http://blog.csdn.net/lu930124/article/detai ...

  8. 北京Uber优步司机奖励政策(12月12日)

    用户组:人民优步及电动车(适用于12月12日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:htt ...

  9. 成都Uber优步司机奖励政策(4月6日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. [Python3.X]python 实现斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ...