解析:
为什么 Android 没有 iOS 那么顺滑
虽然很多
Android 手机的配置都比 iPhone 要高,比如大多数 Andorid 手机的内存都有
1GB,而 iPhone 4S 只有 512MB 内存,但用过 iPhone 的人都知道 Android 手机在使用的时
候总感觉没有那么顺滑,究竟为什么会出现这种现象呢?一位软件工程师和前
Google 实习
生
Andrew Munn 解释说是因为 Android 系统 UI 效率低下的框架设计的问题。
不过,这个实习生
Andrew Munn 是一个软件工程专业的本科毕业生,他在 Android 团
队并没有在框架团队工作,也没有看过
Android 渲染的源代码,因此他所说的未必是 100%
准确。并且他也曾经在
Windows Phone 团队工作过,因此可能会不自觉的对 Android 产生偏
见。以下就是他对
Android 为什么没有 iOS 流畅体验的看法。
Android 没有 iOS 流畅的原因并非 Java GC 导致暂停,也不是因为 Android 运行的是
Java 编译的 bytecode 而 iOS 运行的 native code,根本的原因是,iOS 的 UI 渲染采用实时优
先级,而
Android 的 UI 渲染遵循传统电脑模式的主线程普通优先级。
这听起来似乎很抽象和难以理解,但大家可以尝试一下,使用你的
iPad 或者 iPhone,
打开
Safari,然后加载一个复杂的网页,例如新浪网首页,当网页加载到一半的时候,把
你的手指放在屏幕上,并且四处移动,你会发现所有的渲染立刻停止,在你拿开手指前,
网页永远也不会继续加载。
而在
Android 设备上重复这个操作,你会发现,浏览器会继续尝试加载页面并渲染
HTML,试图多任务同时进行,因此对于 Android 来说,一个高效的双核处理器是很重要
的,这也就是
Galaxy S II 能够非常平滑的原因。
在
iOS 中 UI 渲染过程具有绝对的优先等级,当用户接触到 iPhone 的触摸屏后,iOS 中
所有的进程都将停止,
UI 线程拦截了所有的事件,系统会将所有资源用于渲染 UI 过程,
以保证用户界面的实时渲染优先级。而在
Android 系统中 UI 渲染过程的优先级别却没有那
么高,也就是说当你触摸
Android 手机屏幕的时候,系统后台的程序并没有停止,仍然在
继续运行之中,比如下载和查收短信,这样系统
UI 获得的资源就不够,这就是 Android 系
统不流畅的原因。
由 于 这 个 原 因 , 新 发 布 的
Galaxy Nexus , 甚 至 配 备 四 核 处 理 器 的 话 说 EeePad
Transformer Prime 平板电脑都无法保证顺滑的操作体验,这些设备只能与 3 年前的 iPhone
顺滑程度相比,那么
Android 团队为什么不从根本解决这个问题呢?
除了
UI 渲染之外,Android 缺乏有效的的硬件加速也是一个原因,在不同的 Android
手机上的硬件加速存在巨大差异,而苹果是唯一一个既做硬件又做软件的手持设备公司,
只有苹果可以在硬件中插入对软件的优化,使得基于苹果芯片的设备不仅省电,而且流畅。
实际上,
Android 的开发工作在第一代 iPhone 发布之前就已经开始了,原始 Android 原
型体被设计成为使用键盘手机的设备,也就是黑莓手机的竞争对手。
UI 渲染优先级别在有
键盘的手机上并没有那么重要。但是在
iPhone 发布之后,Android 小组为了快速推出能与
iPhone 竞争的产品,迅速将 Android 改成触摸屏手机系统,但那时重写 UI 框架已经不可能
了。因为如果这样
Android 应用市场中的所有程序将变得不可用,这种关系将一直处于恶性
循环之中。
(这个实习生的伪科学真是编的好,在此反驳)
按照那个实习生的说法,
android 的 ui 不流畅是因为响应 UI 处理的优先级不够,而 google
不改进的原因是因为怕影响到已经发布的应用程序?
这人根本不懂
ios 和 android 的进程控制机制,且不说 ios 中 ui 有最高优先级(笑啊,ios 什