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 应用市场中的所有程序将变得不可用,这种关系将一直处于恶性循环之中。

更多相关文章

  1. 开机引导程序只执行一次的方法
  2. Android中对后台任务线程性能的说明及优化
  3. JNI 无法确定Bitmap的签名
  4. android webview 中网页数据与js交互
  5. 【Android】Android常见的错误及解决
  6. android 项目打包成Library
  7. Android(安卓)进程回收之LowMemoryKiller原理篇
  8. Android的IPC机制(六)—— BroadcastReceiver的使用
  9. Android(安卓)3.0之后开机无法接收系统广播权限原因

随机推荐

  1. Android教程-Android 五大布局讲解与应用
  2. Android(安卓)Studio编译失败:More than o
  3. Android 慕课学习笔记整理(一)
  4. 转:基于 Android NDK 的学习之旅----- C调
  5. 在service和BroadCastReceiver中 启动act
  6. Mac下Android(安卓)Studio中获取SHA1和MD
  7. android shape 的使用。
  8. Android修改icon和roundIcon后,显示的图标
  9. 【摘录】Android Building System 分析
  10. Android中使用SQlite进行数据操作