zoukankan      html  css  js  c++  java
  • iOS- iOS 7 的后台多任务 (Multitasking) 对比之前的异同、具体机制、变化


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

    从 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 待机时间会减少,实际可用时间减少,但官方标称的使用时间不变。

     出处:知乎

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

  • 相关阅读:
    atitit.ntfs ext 文件系统新特性对比
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
  • 原文地址:https://www.cnblogs.com/qingche/p/3658651.html
Copyright © 2011-2022 走看看