为什么 Android 系统总是比 iOS 系统卡顿?

为什么 Android 系统总是比 iOS 系统卡顿?

与使用 Android 相比,使用iPhone 的真正突出之处之一就是它的流畅程度。由于 Android 滞后,在你触摸屏幕和操作系统响应之间有一个可衡量的过渡期,iOS 似乎几乎可以在你的手指触摸显示屏之前预测你想要做什么。

苹果是如何实现这一令人难以置信的壮举的?一个更好的问题可能是:“谷歌是如何把安卓的多点触控搞得这么糟的?” 据软件工程专业学生和前 Google 实习生Andrew Munn 说,Android 太混乱了,Google 可能永远无法与 iPhone 或 iPad 的性能相提并论。


过去,有人说 Android 的 UI 与 iOS 相比滞后,因为 UI 元素在 Honeycomb 之前不是硬件加速的。换句话说,每次你在安卓手机上滑动屏幕,CPU 都需要重新绘制每一个像素,这不是 CPU 非常擅长的。

这个论点是有道理的,除非它是真的,曾经的 Honeycomb 发布时,与 iOS 相比,Android 的触摸响应能力将不再明显滞后。即使在 Android 设备上安装了 Honeycomb 之后,它们仍然滞后。

大多数现代 Android 手机的规格与 iPhone 相当甚至配置更高,说明问题不在于硬件。那么问题是什么?

根据 Munn 的说法,这就是 Android 无法在不滞后的情况下呈现其触摸 UI 的原因。在 iOS 中,UI 渲染进程以实时优先级的专用线程进行,暂停其他进程并将所有注意力集中在渲染 UI 上。. 换句话说,每次你用手指触摸 iPhone 的显示屏时,操作系统都会发出指令:“有人在触碰我们! 有人在碰我们! 停止你正在做的一切,有人在碰我们!”。

但是,在 Android 中,UI 渲染过程与具有正常优先级的主线程一起进行。换句话说,它对待渲染 UI 的方式与在后台下载文件呢或其他事情的方式相同。因此,会出现一个断断续续的用户界面。正常的Android手机使用1-2年就会变得卡顿,需要恢复出厂设置彻底解决卡顿,但iOS不会,理论上它会一直流畅下去。

由于设计限制,Android UI 永远不会完全流畅:

  • UI 渲染发生在应用程序的主线程上
  • UI 渲染具有正常优先级

Android 的工作在 iPhone 发布之前就开始了,当时 Android 被设计为黑莓的竞争对手。最初的 Android 原型不是触摸屏设备。Android 的渲染权衡对于键盘和轨迹球设备是有意义的。iPhone 出来后,Android 团队急于发布竞争对手的产品,可惜已经来不及重写 UI 框架。

那么为什么谷歌没有改变 UI 框架呢?嗯,这是一项艰巨的任务,需要重写 Android Market 上的每个应用程序以支持新框架。需要很多的时间,而且可能永远不会发生。

换句话说,谷歌要想彻底解决Android的延迟问题,基本上需要重新设计并破坏其应用生态系统。另一方面,iOS 是从头开始构建以支持多点触控智能手机,把事情做好很重要。


No comments:

Powered by Blogger.