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


发新话题
打印

[其他] 有没有高手从技术角度解释下ios的后台机制?

iOS的机制就是只要按了home键,程序就暂停了,没有在运行。你所说的QQ,其实按home以后也停止运行了。为什么你还能不断看到QQ聊天内容,那是因为苹果的推送服务器在帮你挂机并即时推送QQ消息到你的手机,你的手机并不需要自己运行QQ软件。


本帖最近评分记录
  • hhhiro 激骚 +1 最骚 Rated by wap 2012-9-10 15:17

TOP

iOS从4.0开始支持了多任务,但也不是一般人理解中的多任务,OS4的多任务非常克制,对资源做了严格的限制。

允许真的常驻后台的只有几种特例:
1、后台音频:允许软件在后台连续播放音乐,用户可以一边用软件听音乐一边上网、玩游戏(现在的QQ音乐、豆瓣FM都在使用这种方式)

2、网络电话:用户可以在使用其它App的同时接收网络电话呼叫并通话,即便手机在口袋中处于锁定状态也可以接收网络电话的呼叫。(Skype使用这种后台模式)

3、后台位置:导航软件现在可以在用户聆听音乐和使用别的软件时继续提供导航服务。OS4也提供了一种新的位置报告机制,仅当用户移动并切换基站时才报告新的位置,这非常省电,很多社交网络软件因此而可以持续了解用户的位置。导航软件运行时标题栏会显示小箭头表示定位服务在后台工作。

4、服务器推送提醒:应用程序即便不在运行中也可以接收从远程服务器发起的推送提醒

5、本地提醒:软件可以在离线的状态下设定事件来提醒用户。(类似一个系统级的闹钟,很多种菜游戏使用这个模式)

除了这几种特例,基本上你可以认为按了home键app就被暂停并保留现场,当你再次进入app时从内存或磁盘恢复现场继续运行。也有部分app基于各种考量选择不保留现场每次都重新开始,这是开发者自己的选择。



TOP

引用:
原帖由 三无 于 2012-9-10 14:49 发表

你的意思是不是ios有个类似暂停的机制,比如开了两个游戏,其中一个在后台暂停?类似进入休眠,不占用内存cpu?
我是觉得ios切换不同的程序时候,切换的一瞬间进入ui有点卡,进去就完全ok了
是不是临时调用资源的 ...
正如我上面所写,按了home键,游戏就立刻暂停,并保留现场,如果内存够用,那么现场保留在内存里,如果内存用尽,那么现场保留在内部存储空间里。切换的一瞬间有点卡是正常的,说明这个瞬间系统在帮你恢复现场,如果很快,那是从内存直接恢复,有时有点慢,那是从存储空间恢复。其实这一切你不用关心,都是系统自动做的。


TOP

引用:
原帖由 三无 于 2012-9-10 15:00 发表

但是有些非推送的程序也可以切换没问题啊
比如粉鸟和植物打僵尸可以来回切换没问题,但是无尽之剑和丁丁历险记就不行了?
还有更特殊的情况,比如播放器虽然关闭了再打开之后一样回到上次暂停的画面 (不是 ...
前面不是说了吗?如果app不是很大,切到后台后暂停,并保留现场,由于app不大,现场保留在内存里,再次恢复时就很快。如果app很大,切到后台后暂停,并保留现场,新的app开始运行时申请了内存,旧的app现场就从内存移到磁盘,那么再次运行旧app恢复现场时速度会比直接从内存读取慢一些。也有一些app的设计是不保留现场,每次进入时都重新读取,比如我之前常玩的音乐游戏tap sonic就是如此,即便你按home键退出,马上再次进入,它也是从头开始,这种app就是没有支持iOS4的现场保留功能。

播放器退出了再次回来还是上次暂停的位置正是现场保留功能的体现。

TOP

引用:
原帖由 zhouli520 于 2012-9-10 15:00 发表
不过这机制的弊病还是有的,对于特定软件来说,比如需要用到下载的软件,就无法在你切出去的时候继续下载了以及一些其他的需要可持续性任务处理的软件
iOS4也提供了任务完成的后台机制,app在退出时可以向系统申请说我有未完成的任务,那么系统会允许让这个app的未完成任务运行到结束。但原则上说这个机制是用于给一些较大型的app在退出后完成更多的收尾工作而设计的,在iOS4之前,每个app在用户按home键退出后只有5秒的时间来保存当前的工作,5秒后就被系统强制终止了。

TOP

引用:
原帖由 beterhans 于 2012-9-10 15:34 发表
posted by wap, platform: iPhone

iOS 除了系统自带的app 有特权 其他没有 除非越狱
后台下载其实有
itunes
app store 这种必须有后台下载

有些杂志也有后台下载不过要去 settings 里开启
报刊杂志的后台下载是iOS5开始提供的系统级特权,这类app可以在有wifi连接的前提下自动后台更新,让用户一起床就发现机器上多了新的杂志:D

其它独立开发的杂志app就没这个特权了

TOP

引用:
原帖由 wpang 于 2012-9-10 15:50 发表
posted by wap, platform: iPhone

管后台的API里有个好像叫Task Completion吧,可以用来干这个的,不过只能十分钟,十分钟以后再点进去一次就再十分钟。
一些剪贴板应用都靠这个真后台的,不过因为只能十分钟所以都 ...
好象是十五分钟吧,这个api本身就不是用来让app常驻后台的,那些app算是巧用。

TOP

引用:
原帖由 c月光咖啡 于 2012-9-11 09:42 发表
哪种好?
各有优劣。现在机能有限的情况下ios从用户体验上占优。但可以看到苹果在硬件性能提升的情况下逐步放开多进程。安卓则是在硬件逐步提高后用户体验也随之提高。现在用三儿子是很舒心的。以后手机将取代电脑成为个人信息中心,单进程永远只是个过渡方案且无法适应未来的需要。
这就是为什么苹果每年要随着iPhone的升级而升级iOS,时代在变,硬件在变,系统跟着变就ok了。方案永远是在进化中的,不存在什么过渡方案,只存在当前而言最合适的方案。

TOP

posted by wap, platform: iPhone
引用:
原帖由 @c月光咖啡  于 2012-9-11 10:11 发表
你有想过如果苹果服务也404会怎么样吗?

可悲的是ios6并没有进一步放开后台,不知道是不是因为教主死的了原因。而且ios这种机制天生的缺陷,就是不会区分运行内存和预读内存。现在苹果只能限制那几个程序使用后台 ...
无谓的假设有意思吗?事实是苹果的推送一直很稳定。这么喜欢假设何不假设如果全世界的电脑和手机都爆炸了会怎样?

TOP

软件开发商当然需要自己的服务器,这样才有数据交互,否则推送给用户的内容你打电话亲口告诉苹果啊?

苹果提供的是一个推送平台,苹果不是数据中心。

TOP

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