Android平台与Ios的对比

这两天在帝都出差工作忙,没什么机会逛论坛,那天刚一上线就看到有个朋友发了一个帖子,对比了iOS和Android的区别。但是我发现,可能是因为该楼主没有开发经验,所以对很多技术层面的情况不是很了解,很多表述并不准确。所以今天觉得有必要写些东西给大家,让大家对此有个初步的认识。想到哪写到哪,如果思路上有凌乱之处,敬请担待,改天抽空改改吧。为什么iphone的电池毫安量和很多android差不多,配置也差不多,但是待机时间长很多呢?

 

  首先,这个情况确实如此,至少我身边的几款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的,只是因为后台不需运行,所以不会太卡。(但是开很多应用后,卡顿感还是有的)

  据我所知,iOS并没有什么退出后给5秒钟时间保存设置之类的机制,如果有朋友有足够的材料,请提供出来让我参考下。而Android不同,Google为了改善开发者的开发体验,并没有在后台和内存控制方面设置太多限制,极大的方便了开发者。但是并不是所有事情都按照Google那样预计的发展,因为Dalvik虚拟机效率的问题,虽然拥有强大的硬件配置,但是Android设备在运行过多程序时,还是会出现明显的卡顿情况。这方面的问题,目前只能期待Google在Android更新中有所改善。

  Android前景如何呢?

  虽然现在Android问题不断,但是作为一款新型的手机平台,考虑到Google的实力以及Android的市场情况,Google有能力也有理由去完善Android,以谋求更大的市场空间。我简单的谈谈Android面临的一些问题。

  首先,最主要的就是效率问题

  因为Google当时定位就是要将Android做成一款覆盖众多机型的手机系统,所以兼容性一定要有保障,为了避免应用因为硬件问题出现兼容性问题,Google提出的解决方案是将中间层以及应用层的程序运行在Dalvik虚拟机中,但是Dalvik的效率并没有Google所想的那么乐观,为了跟的上iphone的步伐,各大厂商最直接的办法只有堆硬件。所以很多时候大家用机子的时候卡,并不是因为自己机子配置不够。

  其次是法律风险

  因为Android底层是使用的Linux kernel,而Linux kernel中拥有众多厂商的专利,而且附加的很多应用遵循各式各样的协议。所以虽然Android是开源的,但他也是一个商业项目,在商业运作中,必然会面临众多的法律风险。

  而且现在部分厂商已经采取行动了。不过Google也没有坐以待毙,而是积极的进行专利交换和收购。

  最后是应用市场的问题

  说实话,对于创业开发者来说,Android并不是一个合适的开发平台。混乱的应用市场管理,落后的保护手段,众多的仿制软件,都极大的打击了开发者的开发热情,没有一个好的开发、收益环境,就无法吸引开发者,没有开发者,应用就会越来越少。

  为什么塞班效率这么高,却不能够通过提高硬件规格来增加他的性能,从而提高操控体验与别的操作系统竞争?一个优秀的系统,需要的不仅仅是高效率,还有开发的可拓展性,以及商业上的运作。对于Symbian来说,他的高效率来自于固定的硬件标准,而他基于的平台现在来看略显陈旧。而且对于开发者来说,Symbian的开发环境并不是非常友好的,别扭的开发环境、冗长的审批流程造成开发者后期并不是很青睐这个平台。

  但是,Symbian并不是说就差到没救了,对Symbian就行修改和优化后也可以达到现在需求。不过,使用一个新的系统,彻底改头换面,对于开发者和用户来讲,吸引力更强。所以我认为,诺基亚转投WP7,并不是说因为Symbian差到不可救药,而是基于商业和成本的考虑。同样,从Meego转投WP7,我认为也是基于商业的考虑而不是技术上的问题。对于WP7的问题,目前因为我涉猎比较浅,所以不好信口开河,请等我熟悉一段之后再说。

  我一开始是想说明为什么iOS在返回桌面后不卡,而android卡。害怕大家误解,所以简述为“iOS没有实际意义上的后台”,看来这种表述会引起误会,所以就大概给大家说说吧。首先,在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,那么这个功能就无法启用。所以说,他们莫名其妙的启用,还有可能是因为别的程序调用他。

  怎么解决呢?我知道的方法也是通过root后,使用第三方应用锁定这些程序,我记得LBE助手好像有这个功能。非root情况下,因为没有相关的权限,想达到这个功能比较麻烦,但未必一定不行(只是目前不行)。不得不说,Android关于安全策略的设计非常脑残(其实很多其它地方也有脑残的地方),不过作为一个起步阶段的系统,也算是能够理解吧。

  好消息是,我看到Google的开发设计,Android也可能采取开放部分API的方式解决这些问题,系统的资源情况就会得到改善。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值