<p>一直以来人们都有这样的印象,认为搭载 iOS 系统的 iPhone 一定比搭载 Android 系统的安卓手机流畅。潜移默化中,不少果粉甚至是普通吃瓜群众都形成了这样的思维定式:安卓就是卡、慢的代名词。然而,就是这样一个群众眼中的“卡、慢”的系统,不知不觉间已经走过了第十个年头。这么多年过去了这个观点还成立吗?</p> <p style="text-align:center"><img alt="iOS 11怕了!Android 8.0改进:告别卡、慢、耗电" src="https://simg.open-open.com/show/6446b0831e95c7313f5be88410b1e8ab.jpg" /></p> <p>Android 8.0 不久前已经发布了,尽管 Android 对比 iOS 似乎有“先天缺陷”,但一直以来谷歌都在不遗余力地提升安卓系统的流畅度。我们不妨来看看谷歌在这方面都做了哪些努力。</p> <p><strong>Android 4.1:黄油计划</strong></p> <p>2012 年 6 月,Google I/O 2012 开发者大会上,谷歌发布了 Android 4.1,该版本担负着“承上启下”的作用,4.1 系统继承了 4.0 的基本特性,又加入了 Project Butter 的新特性。</p> <p>Project Butter 中文称为黄油计划,Google 希望新版的 Android 如黄油一般丝般润滑,所以称之为黄油。该系统使用了新的处理架构,让 Android 设备中的双核、四核处理器能够得到优化,发挥出强劲的性能。</p> <p>其次,在 4.1 版本中,特效动画的帧速提高至 60fps,优化最佳性能和较低的触摸延迟,提供了一个流畅、直观的用户界面。</p> <p>为了确保帧速一致,4.1 版本的 Android 框架所有的绘图和动画都将统一 VSYNC 计时,应用渲染、触摸事件、画面构图、显示刷新等操作都会锁定在 16 毫秒响应,所有的帧都没有提前或者落后。</p> <p>此外,还新增三重影像缓冲技术,让所有的渲染感觉更顺畅。触摸延时不仅会遵循 VSYNC 计时,还会在触摸操作时做出预判是否要提前渲染,此外在 CPU 闲置时会分配更多的处理能力来应对触摸事件,确保触摸没有延迟。</p> <p>黄油项目(Project Butter)为我们带来了 Android 系统的重大改进,谷歌终于开始直面 Android 系统流畅度这个古老并重要的问题了。</p> <p><strong>Android 4.4:对齐唤醒</strong></p> <p>其实,很多时候,安卓系统的卡顿并不是由系统本身造成的,而是由于安卓开放的特性例如对第三方 APP 限制较少,所以很多 APP 长期恶意在后台运行,定期唤醒系统,随着安装的 APP 越来越多,各种 APP 会一窝蜂地唤醒系统,而每次唤醒都会让 CPU 处于高负荷运转状态,导致手机待机时也非常耗电。</p> <p>而 4.4 版本很明显的针对这个问题而做出了优化,在该版本中加入了对齐唤醒功能,把原来需要分别在不同时间唤醒系统的多个 APP 集中在某个时间一次性唤醒。这样,系统被唤醒的次数大幅减少,CPU 也不用频繁的工作,手机也就不会这么卡顿和耗电了。</p> <p><strong>Android 5.0:ART 虚拟机</strong></p> <p>一直以来,Dalvik 虚拟机背负着 Android 应用卡顿的罪名,原因则是应用在运行的过程中,虚拟机 Dalvik 通过一个叫 JIT(Just-in-time)的解释器动态的进行编译并执行,这一过程也拖慢了运行效率。而在 5.0 版本中,原有的 Dalvik 虚拟机被新的 ART 虚拟机代替。</p> <p>Android Runtime(缩写为 ART),是一种在 Android 操作系统上的运行环境,由 Google 公司研发。ART 能够把应用程序的字节码转换为机器码,是 Android 所使用的一种新的虚拟机。它与 Dalvik 的主要不同在于:Dalvik 采用的是 JIT 技术,而 ART 采用 Ahead-of-time(AOT)技术,也就是预编译技术,安装应用的时候,代码中的字节码将被编译成机器码。</p> <p>而由于有了机器码,下次打开的时候就不需要再编译了,这就提高了运行效率,APP 启动速度明显加快。ART 同时也改善了性能、垃圾回收(Garbage Collection)、提高续航能力、应用程序除错以及性能分析。</p> <p><strong>Android 6.0:Doze 嗜睡模式</strong></p> <p>4. 4 的对齐唤醒已经对后台 APP 做出了一定限制,但是显然对于那些“毒瘤 APP”显然是不够的,为了杜绝“毒瘤”APP 不断在后台消耗资源和电量,6.0 版本加入了 Doze 嗜睡模式,在 Doze 模式中,系统尝试去通过减少应用的网络访问和 CPU 敏感的服务来保护电池。它也阻止应用通过访问网络,并且延缓应用的任务、同步和标准 alarms。</p> <p>同时系统定期退出 Doze 模式(maintenance window)去让 app 完成他们被延缓的动作。在 maintenance window 期间,系统运行所有挂起的同步、任务和 alarms,同时也能访问网络。只要用户通过移动、点亮屏幕或则插上充电器唤醒设备的时候,系统会退出 Doze 模式,所有的 APP 退回到正常活动状态。</p> <p><strong>Android 7.0:优化系统代码</strong></p> <p>如果说前几代 Android 是在改善应用环境,提升应用体验的话,那么 7.0 版本就是优化 Android 的运行环境了,谷歌表示,7.0 版本会是最具销量的一代 Android 操作系统,7.0 版本主要通过减少代码的形式来提升运行速度,Android N 的代码减少了 50%,新的代码减少 50%,软件运行速度提升幅度达到 600%,应用安装提速 75%。</p> <p>自从 Android5.0 换了 ART 虚拟机开始,因为安装时要对大量的代码进行预编译,应用安装速度一直被用户诟病,Google 终于在 Android7.0 上解决了这一问题。</p> <p>此外,7.0 版本另一个优化是,每次手机升级完系统之后不用等待漫长的应用优化过程,直接就可以进入系统。</p> <p><strong>Android 8.0:针对低配设备的 Android Go,系统/应用启动优化</strong></p> <p>8. 0 相对前几个版本而言,没有特别大的提升,毕竟 Android 已经第十个年头了,发展已经非常的成熟。8.0 版本主要是细节的优化和体验的提升。</p> <p style="text-align:center"><img alt="iOS 11怕了!Android 8.0改进:告别卡、慢、耗电" src="https://simg.open-open.com/show/41550cc6c8a7925f14f7dc62f8c9c9d1.jpg" /></p> <p>8. 0 版本加入了 TensorFlow Lite 技术,可以帮助低功耗设备跟上当今高强度任务处理,利用新的神经网络 API 帮助底层芯片加速数据处理。这一功能有助于为下一代在线设备提高语音处理,视觉搜索,增强现实等能力。简而言之,就是一个内置在系统的机器学习工具。</p> <p>同时,8.0 版本还针对应用启动的进程进行优化,包括并发进程、压缩收集的垃圾信息和代码区域等。此外还有针对后台服务的限制,防止应用程序在后台运行太久。目标是大大减少电池消耗。</p> <p style="text-align: center;"><strong><img alt="iOS 11怕了!Android 8.0改进:告别卡、慢、耗电" src="https://simg.open-open.com/show/ffa99da13a8b8068d232a8a45616faa6.jpg" /></strong></p> <p>另外,针对配置较低的移动设备,谷歌还推出了 Android Go 的系统,它不是一个独立分支的 Android 版本,而是隶属于 Android O,可以用于 1GB RAM 的设备上,例如为了节省性能,原来系统中吃内存的过渡动画被砍掉,同时还针对 Android Go 开发适配版应用,比如 油Tube Go。</p> <p>如果你认为这个系统只是做减法,那你就错了,在有些方面,谷歌甚至还为 Android Go 添加了功能,比如数据管理,这个对低端机来说十分重要,谷歌会将这个功能添加到快捷设置中。该系统预计 2018 年正式面世。</p> <p>如今 iOS 11 也已经发布了,从某些更新内容来看,是对安卓功能的“借鉴”。所以安卓系统在功能性或者可玩性上甚至超过了 iOS。由于底层系统的先天不足,导致流畅性在早期落后 iOS 很多,但随着谷歌孜孜不倦地优化与更新,Android 在流畅性方面真的未必输于 iOS,卡顿、慢和耗电已经逐渐成为历史。所以,已经存在大家脑海中 10 年的安卓“卡、慢、耗电”的标签,是时候该抹去了。</p> <p>来自: <a href="/misc/goto?guid=4959009171457505129" id="link_source2">驱动之家</a></p>