本文从开发者的角度来剖析为什么Android的机器配置逐渐变好,但性能仍然没有iOS的好。我认为可以从下面几个方向解读。

1. 理念不同

Android 提倡同时跑多个应用,允许后台跑多个Service,最大限度的使用CPU、内存等资源。

iOS 强调同一时间只干一件事情, 不提倡跑多个Service。应用压入后台会被杀掉。

2. 语言不同

Android是Java来实现的, 需要虚拟机。 Java 语言经过虚拟机的编译变为Class文件,虽然针对Android进行了优化(把Class包裹成dex文件),但仍然是在虚拟机中运行的,所以性能肯定会受到影响。

iOS 是类C语言, 编译后的代码都直接变为机器码。 系统直接执行机器码,效率肯定超过Android。

当然随着Android的发展, 也引入了ART的虚拟机。性能也有长足进步。
针对ART虚拟机来看, 他也是尽快得到机器码的方式,跟iOS异曲同工。

垃圾回收机制不同也严重影响了性能。 Java虚拟机提供垃圾回收算法,为了保证功能,需要不停的去进行GC,而iOS完全交由代码来控制垃圾释放。性能当然会好很多。

3. UI层的响应优先级不同

iOS对屏幕反应的优先级是最高的,它的响应顺序依次为Touch--Media--Service--Core架构,换句话说当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是Touch这个层级,然后才是媒体(Media),服务(Service)以及Core架构。而Android系统的优先级响应层级则是Application--Framework--Library--Kernal架构,和显示相关的图形图像处理这一部分属于Library,你可以看到到第三位才是它,当你触摸屏幕之后Android系统首先会激活应用,框架然后才是屏幕最后是核心架构。
可以看到优先级的不同导致了iOS产品以及Android手机在操控过程中的表现差异,当你滑动屏幕进行操控的时候,iOS系统会优先处理Touch层级,而Android系统则是第三个才响应Library层级,这是造成它们流畅度不同的因素之一。不过优先级对系统流畅性有有影响不假,但并不是最绝对的,造成两系统之间流畅性不一的现象还有其它因素,我们可以接着往下看。

4. 硬件适配不同(GPU)

iOS系统对图形的各种特效处理基本上正好都是基于GPU硬件进行加速的,它可以不用完全借助CPU或者程序本身,而是通过GPU进行渲染以达到更流畅的操控表现。但是Android系统产品则并非如此,因为Android需要适应不同的手机硬件,需要满足各种差异配置,所以很多图形特效大多都要靠程序本身进行加速和渲染,并严重依赖CPU运算的操作自然会加大处理器的负荷,从而出现卡顿的问题。虽然Android 4.0以及4.1等更高版本中进行了改进将硬件加速设为默认开启,但依旧无法做到所有特效全部都靠GPU进行加速。在很多Android手机里面都自带有“是否开启GPU渲染”这个功能选项,不过开启之后的改善也是微乎其微。

更多相关文章

  1. Android10.0 系统解析(02)——搭建Android源代码编译调试环境
  2. 如何清空android G1手机里的系统垃圾
  3. Android系统兼容性问题(持续更新)
  4. Android 拍照和图库功能(适配Android 6.0和7.0系统和华为机型问题
  5. Android实现系统级屏幕录制(上)
  6. 探索 Android 系统启动流程 - 当我们按下电源键,Android 究竟做了
  7. android 基于树结构的任意层级列表
  8. 让Android程序获得系统的权限,实现关机重启,静默安装等功能
  9. android文件系统及其制作

随机推荐

  1. android service中stub作用是什么?
  2. Android之targetSdkVersion详解
  3. Android App及Activity回收流程分析
  4. Android数据通信--USB通信的几种方式及使
  5. android Handler资料
  6. Android(安卓)shareprefernce
  7. android实现分享
  8. Android上APP实现动态打补丁的探索
  9. Android输入输出机制之来龙去脉
  10. android的aidl进程间通讯(一)