这是一部分针对android和ios的讨论
为什么Android没有iOS那么顺滑
-
- 1.omf
- 我表示这个实习生的伪科学真是编的好
按照那个实习生的说法,android的ui不流畅是因为响应UI处理的优先级不够,而google不改进的原因是因为怕影响到已经发布的应用程序。我作为设计了6年软件的人表示压力山大啊。
这人根本不懂ios和android的进程控制机制,且不说ios中ui有最高优先级(笑啊,ios什么时候UI有最高级了,明明是系统中断才是最高),竟然说出了android触摸UI时后台进程保持运行这样的荒谬的事情,我都怀疑他是不是在google呆过。
即便他说的UI优先级有理,也不可能出现改变优先级就会使得程序进入恶性循环这种情况。了解android系统架构应该知道负责图形处理(关于优先级部分)的是位于android系统的倒数第二层,也就是内核的上一级,而且android的设计是层与层之前低耦合的,每层对于下一层的依赖仅通过接口来调用,而层内的变化根本不会影响到层外行为。
说简单一点,就如同你去银行柜台办事,你办外汇就去外汇窗口,债券就去债券窗口,而银行内部怎么处理你的请求是他们的事,你只需要提交你的数据并接收结果即可,银行内部员工变动也不会影响你的事务办理。
如果真如这个实习生所说,是UI框架处理优先级的问题,google大可以轻轻松松直接提高优先级,绝不会影响到现有任何程序,因为目前没有任何程序能绕过android的程序框架直接调用到UI下层的方法,因此下层的改进也不会对上层造成兼容性的不适。而且也不增加什么生产成本
但为什么还是感觉android比ios卡?
我觉得这是人云亦云后的“被变卡”感觉(很多人在概念空白时先入为主的被教唆到android比ios卡,不如ios,而且听多了这样的话后自然自己的感觉就不准了),以至于出现了N种关于android为什么不如ios的“科学、内幕”解释。我觉得除了辩证还要用发展的眼光来分析这个问题。
在早期,android的优化的确不如ios,这源自于产品的设计理念和年代(android本身是07年才被收购的一个公司,之前这个系统根本没有得到实际的验证,而ios始终是在apple下从mac时代起就被打造的)。
而硬件也远没有iphone强,加上开放免费,什么鱼龙混杂的制造商都加入进来,元器件供应商也是水很深,造成产品水平参差不齐。很多人对android和ios的差距的认识也是从那时才建立的,而看iphone,一年才出一款机器,无论软件还是硬件,从选择供应商到制作,有足够的周期,都是精挑细琢。
也就是说,android阵营从低端到高端都有,且低端又多又乱所谓的高端少而不精,而iphone就一个高端,这就如田忌赛马,老拿人家优秀的比垃圾的,自然而然口碑也就落成了android不如ios的一个大范围印象。其实这个时代跟ios产品比较,也的确是android的东西不如iphone做得好。
但是近年来android的机器硬件基本上已经超过了iphone但为什么还是觉得比ios卡?除了上述的心理因素遗留之外,我个人觉得其实这无关android本身,并不是os优化这么简单的事。而是硬件问题,其实没有人特别在意这个问题,但是我想说这就如同显示器的响应时间,响应时间快,在播放时就会流畅没有拖影。
电容屏也有响应时间,而且对工作环境电压要求很高,普通的电容板本身响应就比较慢,大概才50~100ms,而且在电压不稳定时反应更慢,而iphone4的电容板响应时间在10~20ms,差距近80ms说是不到十分之一秒,但是在实际体验时这就能影响到人们的直觉。
另一个因素在于触屏的玻璃材质,硬度越高越顺滑,这是根据阻尼系数和摩擦系数可以测出的。同是镜面的情况下,硬度越高的材质在摸上去的时候更顺滑。iphone用的是大猩猩,硬度达到7,裸身时本身触感就顺滑,没有拖沓感,再加上大多数买iphone的人贴膜都会比较下本钱(我贴膜花了129),贴膜也会影响到触感。
在普观android手机,用上大猩猩的寥寥无几,再肯贴好膜的更是少。在手感上也比iphone要差了。
就我个人用iphone4和兔子这么久以来,亲身体会是,android的UI其实缺少过度动画,比如在界面切换时的细节(仔细看,ios的界面切换时除了窗口会移动,标题栏和上面的控件都会以不同的速率在移动,感觉很动感精致,如同流水般),这样在操作时造成了突兀感。实际上从触摸角度来讲,我觉得兔子没有明显的差异。而且明显的感觉是,如果iphone有后台程序,或者运行过较多程序之后,哪怕是普通的界面切换也会有卡顿感觉,很明显的。jackie 于 2011-12-8 13:16:00 回复这个回复很有道理。 前面说的进程优先级确实无法理解,用过Windows的都知道在进程管理器里面是可以实时的修改某个进程的优先级的,也没说改变优先级之后软件就出错了。
系统的反应时间确实由各种因素影响的,首先就是屏幕的响应速度,我用VirtualBox装Android模拟器,在模拟器里用鼠标点击模拟tap事件,确实比真机要快很多。 我主机性能很好,所以可以认为是高档的Android手机表现,如果触摸屏的响应速度能和鼠标点击响应速度一致的话,那么肯定也可以和虚拟机里的Android一样流畅
转换的动画也会给人慢的感觉,所以感觉默认的动画效果不明智,还不如干干净净的直接切换好kjtempuser 于 2011-12-8 15:56:12 回复其实在android3.0以下界面绘制都不支持gpu渲染,这才是主要原因。在你应用里加上android:hardwareAccelerated="true"和不加然后在真机上试验下效果就知道。android底层的2d绘图是用的skia图形库。gluttony 于 2011-12-10 2:28:48 回复android屏幕硬件响应程度高了也没用,驱动程序对采样距离小于十几的点就丢弃了,准确度比iOS差远了。android UI的下层skia以前的发展重点一直是为google chrome提供硬件加速,honeycomb的硬件加速只是半支持,ics才完全支持了。vanxining 于 2011-12-15 10:22:37 回复感觉这个和为什么Linux的图形表现远逊于Windows一样。
Windows将GUI做到了内核之中,Linux只是把GUI当做一个普通的应用程序,孰快孰慢还用说吗?
这不是什么优先级的问题,而是每次系统调用都要陷进内核,导致性能大幅降低。大头龙仔 于 2011-12-17 18:16:38 回复有道理。
其实看到这个问题,我第一时间想到Linux与Windows的UI的一些区别,使得Linux在UI渲染上有很多劣势
虽然苹果的UI也发展自UNIX,但其专注这个领域很久,功底应该很足够,应该弥补了LinuxUI上的诸多不足,所以可以做得更好
上面是小弟的一些浅见 - 2011-12-8 11:52:32 支持(40)反对(10) 回复
- 4.Gaoomei
- iPhone是专门针对自己的硬件优化过OS,但android的开放性决定了这种行为不可能执行,厂商不可能投入那么多资金给每个型号都优化,而且,有钱都不会投入。旧型号系统好了,他的新机就卖不出了。不过听说M9有做这方面的优化,听说而已。
- 2011-12-8 10:23:04 支持(5)反对(2) 回复
- 5.徐建祥
- 完全不敢苟同:1。iOS是伪多任务并发(国内某MTK应用公司为了上市也这么干过,今年因这事被美投行踢爆了),它同时只能干一件事,触摸屏触碰后当然要停止其它程序了;2。UI框架,确切的说屏幕驱动与应用程序几乎毫无关系,软件与硬件之间还有两层,完全可以封装掉而不影响应用;3。最后一句话,乔老
- 2011-12-8 12:16:27 支持(3)反对(0) 回复
- 10.梁巨民
- 不懂技术不要乱说。 后台进程都停止,用于渲染支持的数据哪来?看待事物不要简单的好象自己发现了个新大陆一样,就某一点发表评论。换句话,不要当那些Google工程师是傻X,而你是哥伦布。
- 2011-12-8 12:00:57 支持(3)反对(1) 回复
- 13.鸡啄米
- 虽然没做过iOS跟Android,但是如果真的仅是优先级的问题,大可调整下优先级,对下层内核不会有影响,没他说的那么麻烦。
- 2011-12-9 9:08:56 支持(2)反对(0) 回复
- 14.小刀闲游
- IOS是单线程,当然无法比较了。
比如,你玩其他的,QQ开着,但必须要退出,点QQ才能收到信息。邮件必须要点那个图标才开始收。
打开网页,快速的打开4、5个页面,按照安卓的,一会就加载好,可以看了。而IOS不是,当前页面加载,其他几个页面是不动的。jichi 于 2011-12-8 10:16:16 回复额。。。ios4开始就不是单线程了好不好orz
mobilesafari设计成那样是为了省内存,尤其是ipad1的内存。ios默认禁用虚拟内存,多开几个tab就内存不足了。dk 于 2012-1-10 18:31:13 回复ios是单线程的,qq为什么可以后台通知是因为ios自己有一套通知API,这些通知的消息必须走apple的推送服务。其实ios本身可以做多线程,只是没开放接口罢了,播放音乐就是后台线程,可惜你不能利用它来搞其他的,appstore会把你打回去。 - 2011-12-8 9:51:13 支持(7)反对(6) 回复
- 23.吕子熏
- 一个是通过原生指令执行, 一个是通过jvm加载字节码执行(尽管用上jit也会出现一定效率上的问题)。就算是两个平台之间的硬件差异一样,单就执行效率上来说,Android app在运行上也肯定是会低点~~ 这个跟OS本身采用什么样的调度没有直接的关系
- 2011-12-9 10:39:43 支持(1)反对(0) 回复
- 39.爱微
- 现在一千多元价位的android机基本上够一般人用了~虽然不太流畅,android的定位是来代替非智能机的和其它的智能机的,不是APPLE。
- 2011-12-8 11:20:56 支持(0)反对(0) 回复
- 44.叶智明_COTA
- UI渲染只算其一,底层结构才是两者真正的差距。虽然如此,却不影响山寨智能机的普及。像中国和印度这类国家,是百元智能机的消费大国,移动互联网市场规模正临近爆发点。
- 2011-12-8 11:54:10 支持(0)反对(0) 回复
- 49.Switchonann
- 也由於這樣,iPhone不需要1.5G雙核,依然流暢,加上iPhone Apps的規格較嚴謹。雖然我討厭iPhone太exclusive太霸氣,所以我用Android手機,但是這些卻是我欣賞iOS的地方。
- 2011-12-8 12:32:55 支持(0)反对(0) 回复
- 50.weizhi_li
- 感觉也跟JVM的garbage collector有关吧!相比之下,apple的mac os跟ios同样用的cocoa framework,但是在ios上, apple拿掉了gc。
- 2011-12-8 12:37:45 支持(0)反对(0) 回复
- 57.小田小盆友
- Android系统的应用都是运行在Java虚拟机上,不是靠硬件直接引导,所以非常耗费硬件资源,而Android手机之所以在硬件上飞速发展和这个有很大关系。
- 2011-12-8 13:11:39 支持(0)反对(0) 回复
- 61.骑猪猪吹泡泡
- 也不完全是这个原因吧,JAVA的低效性,再说,苹果的封闭式,软硬并施,协调工作很有优势,这是安卓机们无法做到的。硬件环境的不统一。
- 2011-12-8 13:26:10 支持(0)反对(0) 回复
- 65.蒋嘉润
- 文章关键部分摘录:“原因是Android系统UI的框架设计的问题。原始Android原型体被设计成为使用键盘手机的设备,UI渲染优先级别在有键盘的手机上并没有那么重要。但是在iPhone发布之后,Android小组为了快速推出能与iPhone竞争的产品,迅速将Android改成触摸屏手机系统,但那时重写UI框架已经不可能了”
- 2011-12-8 13:43:36 支持(0)反对(0) 回复
- 67.larrylyang
- 用户体验是一方面, 最重要的还是内容, 没有内容的板子就是一块板子, android世界里看好亚马逊的kindle fire一统江湖,然后和ipad双雄争霸平板市场
- 2011-12-8 14:08:47 支持(0)反对(0) 回复
- 71.理性果仁
- 这些技术问题俺不懂,但是知道一个道理,事实是越辩越明!(不过事实是这句话也不是真理,真是的!这年头什么都不可信,只有自己经过仔细、逻辑性思考,才能最大程度的避免谬论)
- 2011-12-8 16:46:06 支持(0)反对(0) 回复
- 80.onlo
- 虽然不是很懂 当我感觉硬件2D加速肯定占了绝大部分原因...
比如
opera mobile在cpu不是非常强劲的nook color上明显比其他的浏览器滑动流畅...
QQ阅读 翻页和切换动画的时候也比自带的阅读器和掌上书院什么的帧率要高...
- 2011-12-9 16:47:14 支持(0)反对(0) 回复
- 81.Jc
- :Android更注重编程模型,iOS更注重用户体验。Android将应用内(进程内)渲染(controls)和进程间渲染(surface flinger)放在了不同的模块、空间,导致动画时线程切换过于频繁,需要更高的性能的芯片才能达到和iOS相同的效果;要配合渲染也变得很复杂,所以在横竖屏切换时没有像iOS那样的转屏动画;
- 2011-12-12 9:06:20 支持(0)反对(0) 回复
- 82.youyuqijun
- 我单核的HTC Desire HD都非常流畅,而且后台同时运行起码十个我安装的程序,我也特意和iphone比过流畅,打开大网页还没我HTC Desire HD顺滑
- 2011-12-20 8:11:41 支持(0)反对(0) 回复
- 83.youyuqijun
- 我单核的HTC Desire HD都非常流畅,而且后台同时运行起码十个我安装的程序,我也特意和iphone比过流畅,打开大网页还没我HTC Desire HD顺滑,说Android卡的那些人用的手机都是低端或者山寨吧!
- 2011-12-20 8:12:15 支持(0)反对(0) 回复
- 93.挨踢小茶
- 的确啊,安卓的机子在用户体验上感觉还是没有苹果做得好。这就是为什么用过苹果机子的人不想用其他品牌的机子一样。我觉得普通用户应该选在IOS,爱折腾的选Android。
- 2011-12-8 12:57:19 支持(2)反对(3) 回复
- 95.StewartHou点me
- 因為Android至今還是個測試版,一定要進過十幾個版本之後才會是個成熟的產品,這就是Google,一個工程師當道的公司,產品的親民度不可能和一個設計師當道的公司比。
- 2011-12-8 13:56:11 支持(0)反对(1) 回复
- 96.文森特连
- 其实能听歌就好啦!挂那么多在后台会让系统变慢。又不是PC,手机的CPU和RAM资源有限,挂多了App,很多会自动死掉,相当不稳定,导致Android的体验不佳。现在手机CPU没有上G的,RAM没有个512M真的是不行。
- 2011-12-8 14:02:58 支持(0)反对(1) 回复
- 99.yang
- 当年买的HTC G1现在运行起来就跟shit一样,连iphone一代都不如!
我尝试玩了玩同事的iphone1,竟然比现在的nexus one还要先进。
为了UI的流畅度,也为了满足性价比,我选择了palm pre2,webos就是流畅了,而且还有云同步功能,很爽! - 2011-12-8 10:13:57 支持(2)反对(5) 回复
- 101.健康善业
- 文森特连:其实能听歌就好啦!挂那么多在后台会让系统变慢。又不是PC,手机的CPU和RAM资源有限,挂多了App,很多会自动死掉,相当不稳定,导致Android的体验不佳。现在手机CPU没有上G的,RAM没有个512M真的是不行。
- 2011-12-8 14:14:35 支持(0)反对(3) 回复
- 103.dos5gw
- "当用户接触到iPhone的触摸屏后,iOS中所有的进程都将停止" 我笑了, 不知道这个实习生对os的基础知识有多少
- 2011-12-8 10:22:37 支持(2)反对(7) 回复