您的位置:首页 > 移动开发 > Android开发

为什么Android机子运行时会卡而IPhone却不会?

2013-04-22 18:37 274 查看
首先,说一下为什么Android待机时间较IPhone稍微短一些,android机子待机时间基本都比iphone4稍微短一些。但是为什么会这样呢?很简单,电源管理器的效率问题。目前iOS设备的配置都是确定的,所以这对电源管理器的和硬件来说,是非常便捷的。   相对于Android的设备,因为设备的配置众多,所以对电源管理器的标准并不统一,而很多手机厂商对于系统的开发仅仅停留在UI和应用层的层面,欠缺足够的对底层调试的能力或经验,所以会造成电源管理器效率并不是很高。
  另一方面,考虑到各个电池厂商电池的质量问题不一,而iphone4的电池供应是有保障的,所以电池的稳定性会好一些。根据初步的测试结果,IP4比跟他配置类似的主流android手机待机时间长20%。
那么为什么IP4软件开了很多软件退出后系统不是很卡,但是android会卡?
  这个跟android与iOS的后台机制不同。开发过iOS应用的开发人员应该有体会,iOS对内存的控制对开发人员来说简直是噩梦,非常的严格和苛刻。而且,iOS上没有实际意义的后台,所有的程序在你返回桌面时,会锁定现场,系统会保存现在的运行状态,但是该程序不能再申请额外的RAM和CPU时间。这就导致你的程序不能在后台运行,这也是为什么很长一段时间QQ不能后台挂Q的原因,后来apple改进了push机制,才解决了这个问题。
  所以说,iOS上,退出程序后感觉不太卡,只是因为系统将程序挂起了,不允许他再额外申请RAM和CPU时间。但是他为了保护现场,还是要占去部分RAM的,只是因为后台不需运行,所以不会太卡。(但是开很多应用后,卡顿感还是有的)
而Android不同,Google为了改善开发者的开发体验,并没有在后台和内存控制方面设置太多限制,极大的方便了开发者。但是并不是所有事情都按照Google那样预计的发展,因为Dalvik虚拟机效率的问题,虽然拥有强大的硬件配置,但是Android设备在运行过多程序时,还是会出现明显的卡顿情况。这方面的问题,目前只能期待Google在Android更新中有所改善。
简单的说,在iOS4之前,apple只提供了非常非常有限的多任务功能,iOS4之后,才有了改变,但是条件依旧非常苛刻,apple只开放了7个可以后台运行的API接口,分别是Background audio 背景音乐,Voice over IP IP语音服务, Background location 后台位置,Push notifications 推送通知,Local notifications 本地程序通知,Task finishing 任务完成,Fast app switching 程序快速切换。
  这7个API是一直运行的,如果你的程序需要这7种功能,在申请后就可以享受到。但是,该程序未基于这七种接口的部分就会被挂起,不能申请额外的RAM和CPU时间(就算这七种API,apple本身都是非常严格的限定了可申请的资源的)。这跟Android有了本质的区别,Android的程序可以实时运行自己的程序体,功能上更加完善。所以在功能上Android占优势,但是效率上就是劣势了
  很多应用,为了满足自己的功能需要,不得不添加一些守护进程,嵌入系统中,例如说微信之类。还有另一种情况,就是别的程序调用了该程序的某些模块。例如有的应用程序在使用地图功能时,就会调用系统Google maps相关的模块,你此时打开进程管理器,就会看到,不只有这个程序,还有Google maps,如果你的机子通过root后删除了Google maps,那么这个功能就无法启用。所以说,他们莫名其妙的启用,还有可能是因为别的程序调用他。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: