博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 多任务Multitasking、后台机制解析
阅读量:5937 次
发布时间:2019-06-19

本文共 1427 字,大约阅读时间需要 4 分钟。

iOS 7后,实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现。新系统中,开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作。

iOS 后台模式

  1. 无后台仅推送
  2. 墓碑式
  3. 智能调度后台
  4. 真后台

无后台仅推送

  第一种后台方式为传统的无后台操作,仅有苹果推送机制,这种方式出现在iOS 3.x以下的大部分系统版本上。这个方式下,应用在按下Home键后即会关闭退出,其数据通过苹果搭建的推送服务器传输,并不需要应用后台运行。这种方式 不太好的原因在于,每次推出后,重新进入均需要重新加载,虽然推送能够统一解决数据和信息的传输,但遇到需要频繁进入应用(如聊天APP)的时候便会显得 体验不好。

无后台仅推送
### 墓碑式

  第二种方式为墓碑式的后台机制,这在iOS 4后被大量采用,也就是人们所说的伪多任务。这方式相比较第一种改进的地方在于,按下Home键至主界面后,应用随即进入后台,但其被冻结,并不能进行任何操作。   

智能调度后台

  第三种为系统智能调度的后台,iOS 7新增的background fetch,这个后台接口在苹果WWDC 2013上有提及,其会根据用户行为自动调整达到效率最优的后台模式,能够处理不是很有时效性的信息获取。例如一些社交、新闻类的应用的后台信息更 新,iOS系统便会根据应用启动频率、时间和当前网络和电量的状况来智能分配每个应用的后台获取频率和启动时长。   

新闻类APP
 由于拥有该接口的应用的数据后台刷新操作是统一调度的,因此系统可以在一个进程里面获得多个应用的数据,类似统一的推送机制,这样就能够最大限度地省 电。不过这个方式也有一个缺点,那便是开发者不能设定数据具体什么时候更新,因此这个后台方式只能应用在一些时效性和敏感度不高的地方。

真后台

第四种方式便是真后台机制,但iOS的真后台与Android的后台机制是不一样的,为了兼顾系统体验和统一进程管理,iOS在这上面加入了众多的限制。大致拥有以下几个后台接口模式:

Background modes for apps
  1. Audio and AirPlay 该应用会向用户播放可听内容或在后台录制音频。(此内容包括使用AirPlay播放音频或视频内容。)第一次使用需要用户授权应用使用麦克风。
  2. Location updates 即使在后台运行时,该应用也会向用户通知其位置。
  3. Voice over IP 后台语音服务,类似Skype通话应用调用,可以进行后台语音通话。
  4. Newsstand downloads 报刊杂志后台自动下载更新,其能够自动实时更新。
  5. External accessory communication 该应用程序与需要通过外部附件框架定期传递更新的硬件附件配合使用。
  6. Uses Bluetooth LE accessories 该应用程序适用于需要通过核心蓝牙框架定期提供更新的蓝牙配件。
  7. Acts as a Bluetooth LE accessory 该应用程序通过核心蓝牙框架支持外设模式下的蓝牙通信。使用此模式需要用户授权;
  8. Background fetch 该应用程序定期从网络下载和处理少量内容。
  9. Remote notifications 该应用程序想要在推送通知到达时开始下载内容。使用此通知可最大限度地减少显示与推送通知相关内容的延迟。(QQ、微信)

参考:

转载地址:http://yyttx.baihongyu.com/

你可能感兴趣的文章
ES6新特性:Javascript中的Reflect对象
查看>>
hibernate逆向工程生成的实体映射需要修改
查看>>
mysql update操作
查看>>
Robots.txt - 禁止爬虫(转)
查看>>
MySQL数据库
查看>>
项目分析_xxoo-master
查看>>
SQLServer2012自增列值跳跃的问题
查看>>
如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)
查看>>
使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失
查看>>
ViewBag对象的更改
查看>>
算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)
查看>>
apache安装mod_ssl.so 出现 undefined symbol: ssl_cmd_SSLPassPhraseDialog错误解决
查看>>
new Function()
查看>>
Vector & ArrayList Hashtable & HashMap ArrayList & LinkedList
查看>>
Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
查看>>
Mysql 监视工具
查看>>
hdu1025 Constructing Roads In JGShining's Kingdom(二分+dp)
查看>>
Android PullToRefreshListView和ViewPager的结合使用
查看>>
禅修笔记——硅谷最受欢迎的情商课
查看>>
struts2入门(搭建环境、配置、示例)
查看>>