为啥有人说Apple 不允许iphone运行后台任务?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥有人说Apple 不允许iphone运行后台任务?相关的知识,希望对你有一定的参考价值。

为什么有人说Apple 不允许iphone运行后台任务?苹果一直以来不都可以运行后台程序的吗?以下软件不都是后台运行的吗? IPOD1.02就有的蚂蚁!来电绣来电防火墙闹铃主题软件

这是苹果的ios系统后台运行机制问题,就因为这样,苹果系统运行流畅不易卡顿。但不是说所有程序都是不支持后台运行的。
iOS中,实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现。新系统中,开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作。
无后台仅推送
  第一种后台方式为传统的无后台操作,仅有苹果推送机制,这种方式出现在iOS 3.x以下的大部分系统版本上。这个方式下,应用在按下Home键后即会关闭退出,其数据通过苹果搭建的推送服务器传输,并不需要应用后台运行。这种方式不太好的原因在于,每次推出后,重新进入均需要重新加载,虽然推送能够统一解决数据和信息的传输,但遇到需要频繁进入应用(如聊天APP)的时候便会显得体验不好。
墓碑式
  第二种方式为墓碑式的后台机制,这在iOS 4后被大量采用,也就是人们所说的伪多任务。这方式相比较第一种改进的地方在于,按下Home键至主界面后,应用随即进入后台,但其被冻结,并不能进行任何操作。
智能调度后台
  第三种为系统智能调度的后台,iOS 7新增的background fetch,这个后台接口在苹果WWDC 2013上有提及,其会根据用户行为自动调整达到效率最优的后台模式,能够处理不是很有时效性的信息获取。例如一些社交、新闻类的应用的后台信息更新,iOS系统便会根据应用启动频率、时间和当前网络和电量的状况来智能分配每个应用的后台获取频率和启动时长。
由于拥有该接口的应用的数据后台刷新操作是统一调度的,因此系统可以在一个进程里面获得多个应用的数据,类似统一的推送机制,这样就能够最大限度地省电。不过这个方式也有一个缺点,那便是开发者不能设定数据具体什么时候更新,因此这个后台方式只能应用在一些时效性和敏感度不高的地方。
真后台
  第四种方式便是真后台机制,但iOS的真后台与Android的后台机制是不一样的,为了兼顾系统体验和统一进程管理,iOS在这上面加入了众多的限制。大致拥有以下几个后台接口模式:
  1、Background Audio,这是后台的音频,这个很早之前便有,也是iOS设备中用得最多的后台应用,调用这个接口可以实现后台的音乐播放。
2、Location Services,这是后台的定位,系统会拥有统一页面进行管理。
  3、VoIP,后台语音服务,类似Skype通话应用需要调用,可进行后台的语音通话。
  4、Newsstand,报刊杂志后台自动下载更新,其能够自动实时更新。
5、Background Task Completion,这个接口早在iOS 4时候便拥有,其可以供任意类型的APP使用,不过在旧系统中,这个接口的后台限制运行时间仅为10分钟,意味着当应用退至后台,其后台运行仅能持续10分钟便会转至休眠状态。iOS 7中对这个接口作出了改变,原来的为连续10分钟,即不论你这10分钟内用户是否关闭屏幕进入休眠状态,应用仍然会在后台等待10分钟完结后推出,而新的改进为假如遇到关闭屏幕休眠的情况,这后台运行的10分钟便会跟随一同休眠,剩余的后台时间将会留待用户再一次唤醒设备才计算。这样后台运行的时间仍然为10分钟,但并不连续,这样做的优点为省电。
如现在有一些词典应用带有后台复制选词功能,实际上其是利用了这个接口,如果用户开启词典后并推出,即使屏幕关闭,但词典仍然在后台运行,电量消耗还是比较大的,在iOS 7上,这个问题可以得到解决。
  6、 Remote Notification,这是本次较大的一个改进接口,以往聊天类应用接受推送后点进去需要再收一次信息,这情况在QQ、微信等应用上最为明显。不过拥有了这个接口后,这情况将不复存在,以后推送将能够直接启动后台任务。值得注意的是remote notification支持silent notification(静默推送),这样dropbox这类同步应用可以在后台以最节能的模式实时静默同步了,类似布卡漫画这种也可以推送正在追的漫画的新章节并在后台静默下载,待到下载好再给用户发送一个本地推送,用户点开即看无需再联网。
  7、Background Transfer Service,后台上传下载。iOS最接近传统多任务的后台接口,可供任意类型的app调用,无时间限制。应用场景包括后台上传和下载数据,这使得游戏后台更新数据包,后台上传视频等等都成为可能,但是正如其名字,它只能用于处理上传下载这种传输类的任务,类似后台剪切板监控这种它就无能为力了。
总结
  以上便是iOS 7系统中最主要的后台机制,有部分是旧版iOS系统已经存在,现在也被沿用下来,而新增加的几个后台接口,进一步开放iOS设备的后台权限,不过为了继续保持iOS移动设备的优秀体验,苹果是逐步放开,并且加入了相应的限制。background fetch、Remote Notification、Background Transfer Service是三个比较有看头的后台接口,实际中,开发者可以灵活运用这些接口实现应用的智能后台服务,例如常见的地图应用可以开启定位(Location),其检测到用户进入到另外的城市便会自动进行后台的离线地图下载,通过Background Transfer Service接口。
参考技术A 实际上iphone的系统是unix核心的,unix核心从开发之始就是以多任务多用户微内核为核心开发的。这也是apple说iphone不支持多任务,而确1.1.4时代有很多软件都可以实现后台运行,2.0后apple应该是关闭了更多程序接口,后台运行更困难了,但还是有background这种多任务软件的出现。iphone是支持后台多任务运行的,甚至可以多用户运行!多任务的障碍是apple公司的人为设置的,而这种人为设置的障碍也导致了safari的容易崩溃(搬起石头砸自己的脚啊!)ps:apple设置这种障碍的原因是为了保障“用户体验” 参考技术B

这是苹果的ios系统后台运行机制问题,就因为这样,苹果系统运行流畅不易卡顿。

实际上iphone的系统是unix核心的,unix核心从开发之始就是以多任务多用户微内核为核心开发的。这也是apple说iphone不支持多任务,而确1.1.4时代有很多软件都可以实现后台运行,2.0后apple应该是关闭了更多程序接口,后台运行更困难了,但还是有background这种多任务软件的出现。iphone是支持后台多任务运行的,甚至可以多用户运行!多任务的障碍是apple公司的人为设置的,而这种人为设置的障碍也导致了safari的容易崩溃(搬起石头砸自己的脚啊!)ps:apple设置这种障碍的原因是为了保障“用户体验”


参考技术C 引用 原帖由 hugufeng 于 2009-2-4 17:31 发表 =700) window.open(' http://www.weiphone.com/images/common/back.gif');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >苹果是不允许自家以外的程序后台运行 你说的哪些要么是第三方开发的需要越狱 要么就是苹果自家的 APP STORE里的程序都是不代后台的 [/quote]汗,是我理解错误!也是他们被说明白! 参考技术D 主要问题是内存太小,都后台了估计就没前台可运行的了

以上是关于为啥有人说Apple 不允许iphone运行后台任务?的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台保持 iphone ios websocket 连接处于活动状态?

iPhone:重复后台任务

iPhone应用程序在后台运行时检测wifi网络

新款 Apple Watch 键盘疑似“抄袭”?开发者喊话苹果:“法庭上见!”

有没有办法在 Apple Watch 的后台每天运行一次代码?

当 Apple Watch 处于后台状态或睡眠模式时,我们如何从 iphone 向 Apple Watch 发送消息?