» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 20 12
发新话题
打印

[下载] 简单说一下iOS7的多任务API(已完成)

总结一下吧,现在有4种新的真后台模式
1.老的10分钟后台改,会在用户激活设备时运行,而不是退出应用后的连续10分钟
2.系统智能调度的数据刷新,用户和应用都不知道什么时候会刷新,但是非常省电,适合新闻阅读器和微博客户端
3.远程推送后台,现在收到一个推送可以启动应用的后台qq再也不用再收到推送后还要收一遍信息,点进去就是已收到状态
4.上传下载,无时间限制,一直运行到下载完毕为止

多种模式可以互相组合,例如收到一个推送(推送可静默,不通知用户)启动后台下载。
设置里面可以单独禁用某个应用的后台


--------------------------------------------------


iOS7中的app分为四种后台模式,需要注意的是无论哪一种都需要app本身实现相应的后台接口
level 1 无后台仅有推送 - 参考iOS3.x
level 2 墓碑式后台 - 现场还原,即所谓的伪多任务,绝大多数iOS4以后的app是这种后台模式
level 3 由系统智能调度的后台 - iOS7新增的background fetch,keynote上着重讲过的根据用户行为自动调整达到效率最优的后台模式,用于处理不是很有时效性的信息获取,例如sns,新闻类应用的后台更新等,系统会根据用户启动应用的频率和时间以及当前的网络和电量情况来智能分配每个应用的获取频率和时间,数据刷新是统一的,即系统可以在一个进程内获取多个应用所需的数据而不是一个应用一个进程(类似统一的推送机制,都是为了省电),开发者不能确定数据会在何时被更新所以这个api只能用于处理非敏感信息
level 4 真后台
但此真后台非Android和传统桌面OS的真后台,为了让用户免于进程管理仍然有多种限制,大致分为图中几种模式

其中2345跟iOS4时代基本没变化,audio和VoIP是真正意义上的多任务,newstand是定时更新,location则是由系统统一管理
6在前面提过,我认为他不能算真后台因为用户和开发者都不能预测何时被系统调度
task completion是iOS4就有的一个通用后台接口,可供任意类型的app使用,其限制是只能后台运行10分钟。iOS7对其作出的改变是原本的10分钟是连续的10分钟,既是说即使在这10分钟内用户关闭了屏幕或是时间到自动关屏了系统也不会进入休眠状态而是等待10分钟后台运行完毕,新的系统则会正常休眠,将剩余的后台时间留到用户下一次唤醒设备。这样后台的运行时间仍是10分钟但不再是连续的。这样做的好处是省电,打个比方现在很多词典带后台复制选词功能,实际上就是用了task completion,这样一旦用户开启一次词典并退出就意味着设备至少10分钟没法进入休眠状态,对电量是很大的消耗,iOS7以后该休眠照样休眠,并且下次你唤醒设备后台取词还在。
remote notification是本次较大的一个改进,以往im类应用接受推送后点进去需要再收一次信息的情况将不复存在,推送将能够直接启动后台任务,具体的时限我还没仔细看。
值得注意的是remote notification支持silent notification,这样dropbox这类同步应用可以在后台以最节能的模式实时静默同步了,类似布卡漫画这种也可以推送正在追的漫画的新章节并在后台静默下载,待到下载好再给用户发送一个本地推送,用户点开即看无需再联网。
关于background fetch和remote notification的适用场景官方给出了参考

background transfer service - iOS有史以来最接近传统多任务的后台接口,可供任意类型的app调用,无时间限制。应用场景包括后台上传和下载数据,这使得游戏后台更新数据包,后台上传视频等等都成为可能,但是正如其名字,它只能用于处理上传下载这种传输类的任务,类似后台剪切板监控这种它就无能为力了。

组合-实际应用场景中灵活组合多种后台模式可以实现传统多任务的绝大多数应用模式而无需用户插手进程管理,例如一个地图类应用可以开启location服务,当检测到用户进入一个新的城市后开启一个
background transfer service下载该城市的数据包。又比如, remote notification可以和background transfer service组合实现订阅的电视剧甚至电影后台静默更新。

[ 本帖最后由 mayokaze 于 2013-6-14 15:27 编辑 ]
附件: 您所在的用户组无法下载或查看附件


本帖最近评分记录
  • 烂鬼东 激骚 +1 最骚 Rated by wap 2013-6-14 18:19
  • 眼神 激骚 +1 最骚 Rated by wap 2013-6-14 14:18

TOP

其实只有background fetch、remote notification fetch和background transfer是新加的

而且前两者会先被操作系统启动/唤醒应用,然后再进行处理,所以这个速度值得担心……
苹果的人也说了会记录每次操作的时间,如果时间太长下次就不唤醒你了

background transfer基本上就是围绕着NSURLSession这个新类的
用它做的网络数据传输是不受应用挂起影响的



TOP

我觉得我的手机迅雷可以后台下载,不知道它是怎么做到的。


TOP

posted by wap, platform: iPhone

很好没真后台 可以放心续签 iPhone 5 了

TOP

就算是background fetch、remote notification fetch 也足够流氓app刷了。。。

TOP

引用:
原帖由 tonyunreal 于 2013-6-14 13:35 发表
其实只有background fetch、remote notification fetch和background transfer是新加的

而且前两者会先被操作系统启动/唤醒应用,然后再进行处理,所以这个速度值得担心……
苹果的人也说了会记录每次操作的时间 ...
background fetch是系统统一调度,remote notification则是调用回调函数,都不会启动应用本身啊
除了新加的3种模式以前的几种也有小变化,变化最大的是task completion

TOP

引用:
原帖由 trashman 于 2013-6-14 13:39 发表
我觉得我的手机迅雷可以后台下载,不知道它是怎么做到的。
就是task completion,后台只能10分钟,iOS7后用bts可以无限时长了

TOP

引用:
原帖由 风间星魂 于 2013-6-14 13:43 发表
就算是background fetch、remote notification fetch 也足够流氓app刷了。。。
可以在设置里面禁用某个app的后台的,还有相应函数检测是否被用户禁用了后台

TOP

我觉得我网速没那么快,10分钟应该下载不完一集,下次再试试。

我老感觉silence notification 和 bts 会被国内厂商流氓化。
以前每个月250MB的流量几乎够入门,以后得要以GB来算了吧。
引用:
原帖由 mayokaze 于 2013-6-14 13:46 发表

可以在设置里面禁用某个app的后台的,还有相应函数检测是否被用户禁用了后台
刚看到,

神教满载

[ 本帖最后由 trashman 于 2013-6-14 13:53 编辑 ]

TOP

我没记错的话bts是wifi only的

TOP

传说有个办法能突破时间限制。。
就是用audio后台挂住,循环放一个空声音文件。。
我没有验证,以前在cocoachina看到的。。

TOP

引用:
原帖由 风间星魂 于 2013-6-14 13:56 发表
传说有个办法能突破时间限制。。
就是用audio后台挂住,循环放一个空声音文件。。
我没有验证,以前在cocoachina看到的。。
可以是可以,以前pastebot就是这么干的,后来苹果不过审核了

TOP

引用:
原帖由 mayokaze 于 2013-6-14 13:57 发表

可以是可以,以前pastebot就是这么干的,后来苹果不过审核了
过审核有的是办法。。这些api非私有框架,静态分析不会被查出有问题。
运行时根据需要改变就可以了。。。

TOP

posted by wap, platform: iPhone
引用:
原帖由 @mayokaze  于 2013-6-14 13:57 发表
可以是可以,以前pastebot就是这么干的,后来苹果不过审核了
可以过审,特殊方法二次包装一下,水果机器审查比较好骗

TOP

据我所知有些刷量的app就是用这召搞的。。。大量浪费用户流量。。。

TOP

 20 12
发新话题
     
官方公众号及微博