[经验分享] Android 系统 UI 效率低下的框架设计的问题

一位软件工程师和前 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 应用市场中的所有程序将变得不可用,这种关系将一直处于恶性循环之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值