本文来自太平洋电脑网
买手机时,最常听到的建议是,有钱就买苹果吧,用几年都不会卡。所以即便是苹果新款手机卖出超出市面上绝大部分手机近一倍的价格,依旧有许多消费者会为之买单。因为他们相信,苹果的手机能用上更长的时间而且拥有绝佳的体验。
事实上,的确是如此,尽管安卓旗舰的配置和体验越来越好,但苹果似乎还是维持着在手机界的霸主地位。本篇文章就为大家讲述 iOS 为什么能做到持久不卡而 Android 却频繁卡机。
全面屏手势——“更流畅的动画效果”
iOS 的设计和体验一直是有口皆碑的,特别在 iPhone X 之后的全面屏手势体验上,目前来说,还没有安卓的手机能完完整整做到 iOS12 上全局手势上的跟手度,而系统各处的动画效果比如打开控制中心、在多任务处理时进行轻扫,或在 app 中滚动浏览,这些操作都会更流畅、更灵敏。
Android 尽管拥有各种各样的快捷操作、自定义手势,全面屏手势,动画效果,但整体上的视觉效果并比不上 iOS 带给用户的流畅、完整、跟手。所以第一印象很容易会给消费者带来 Android 手机比不上苹果手机流畅的感觉。而事实上,造成这种现象的原因源于很多底层的原因,下文一一细说。
流程更简短,优先响应级别
当我们使用 iPhone 或者是 Android 的智能手机时,第一步就是从锁屏解锁进入到桌面,然后找到需要使用的 APP 点击进入。
这是绝大部分人使用手机时候的基础操作,这个时候 iOS 系统就表现出来了流畅的一面,但 Android 产品却经常给人一种卡顿的现象,特别是后期使用手机时候点开的软件多了的时候,Android 就远远不如 iOS 流畅。这是为什么呢?
这与两个系统的响应优先级有关,iOS 对屏幕反应的优先级是最高的,它的响应顺序依次为 Touch>Media>Service>Core 架构,简单说当用户触摸屏幕之后,系统就会最高优先去处理屏幕显示,也就是触摸(Touch)这个层级,然后才是媒体(Media),服务(Service)以及 Core 架构。
而 Android 系统的优先级响应层级则是 Application>Framework>Library>Kernal 架构,和显示相关的图形图像处理这一部分属于 Library。也就是说当你触摸屏幕之后,Android 系统首先会激活应用,调用框架然后才是屏幕最后是核心架构。
所以 iOS 能让人从上手就感受到跟手,流畅,因为 iOS 从一开始开发就是为触摸屏幕交互所设计,而 Android 则不同,Android 的设计初衷是为了软件 APP 而开发。不过优先级对系统流畅性是有影响不假,但这并不是最主要的原因,造成两系统之间流畅性不一的现象还有其它因素,我们可以接着往下看。
硬件加速
如果说从系统底层优先级响应上,iOS 已然做到了为流畅而生,那么在硬件上,iPhone 也与 Android 手机不同。iOS 系统对图形的各种特效处理基本上都是基于专用的 GPU 硬件进行加速的,它可以不用完全借助 CPU,而是通过 GPU 进行渲染以达到更流畅的操控表现。
而 Android 则不是如此,一方面原因是 Android 需要适配不同硬件以满足各种差异配置,一方面 Android 的设计逻辑并不是为了触控服务。当然,在 Android 4 之后的系统版本中,都默认开启使用 GPU 硬件进行加速渲染,但依旧无法做到所有特效全部都靠 GPU 进行加速。
屏幕最先响应的优先级关系再加上 iSO 本身 GPU 加速程序的特性,使得用户在操控过程中感觉 iOS 手机拥有着超高的流畅性和舒适度。因为 iOS 本身的整个设计流程都是在为最大化的流畅做服务,不管是第一印象的滑动触摸屏幕,还是你进一步使用程序时的操作都是如此。最后加上 GPU 加速这点特性,使得 iOS 能软硬件结合,使系统流畅性达到 Android 手机望尘莫及的高度。
后台机制——“伪后台”与“真后台”
如果说 iOS 在触摸屏幕上做到软硬结合已然不错,但 iOS 与 Andorid 在软件运行时的流畅度不同,则是因为另一个明显的区别:后台机制。
iOS 是采用伪后台机制,当用户按 HOME 键(主页键)退出应用时,iOS 其实关闭了该应用,只保留应用的图像入口,并默认将应用的最后运行数据记录在 RAM 中,当再次打开应用时,系统就会把之前保持的最后运行数据还原到应用中,此时应用还原了之前的状态,给用户一种应用会在后台运行的错觉。
那么为什么 iOS 中被杀死的应用也能收到推送消息呢?因为用户从应用中选择了开启推送后,iOS 系统会增加几个进程,这几个进程会从苹果的服务器接收信息,然后再通过该服务器发给用户,苹果服务器在其中就起到了中转的作用。正是因为有了这一系列的机制,所以即便 iPhone 的“表面”配置 RAM 比安卓手机低,但是 iOS 还是会给人更加流畅的感觉。
而 Android 则不同,Android 采用的是真后台机制,将应用保留在 RAM 中,当用户按主页键返回桌面或者退出程序时,程序实际上并没有完全退出,而是被系统挂在了后台。这就是为什么 Android 即便关掉了聊天软件,依然能收到消息通知,因为它是常驻系统内存的,包括平时收到的垃圾广告推送,也是因为后台程序在运行。
这机制直接导致从内存使用上来看,Android 刚开机时内存使用很低,正常使用一天,如果不进行清理内存操作,内存占用就会越来越高,导致 Android 系统的流畅度降低,最直观的感受就是卡慢。所以安卓机器需要更大的 RAM,来提升用户体验;
开发机制不同
iOS 的编程语言是 Objective-C,使用编译器 GCC,而 GCC 编译出来的代码又被 iOS 架构优化到了极致,运行过程中不需要虚拟机在中间插手,执行效率非常高。而且 GCC 使用内存是自己分配和回收的,简单说就是当 GCC 要操纵指针,使用完内存,当时就释放了。这导致了 ios 的内存使用率并不是特别高。所以 iOS 并不需要特别大的内存。
Android 的编程语言是 Java。Java 的内存管理是通过 jvm,jvm 是后台管理内存,不需要程序关注内存。达到一定的内存占用量会触发 gc,gc 会 stoptheworld,把用户线程停止掉。因此可能会影响两方面,第一在 gc 的时候卡顿,特别是长 gc。长的可能达到几秒甚至几分钟。
第二,Android 本身不是为触摸屏打造的,安卓所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户 UI,任何程序都可以轻松访问其他程序文件。同时 gc 是后置的,内存占用达到一定程度才回收内存,这导致了 Android 的内存使用率很高。当然,谷歌也意识到了这一点,所以在 Android 4.0 系统版本之后的版本,编程语言和机制已经被 Android 进行了改善,卡顿现象明显降低了。
应用开发,封闭式的 App Store
App Store 是 iPhone 和 iOS 一个极为重要的标志,App Store 不仅为苹果实现了软件上的盈利,更为 iOS 中的应用设置了一个标准要求,让每一个应用程序一年都只适配一种最多两种 CPU,极大的提高了硬件利用效率和软件开发速度。
而 Android 则不同,安卓是开源的,开放的,而且安卓是基于 Linux 内核和多线程的开发平台,开发成本低。此外,Android 没有像 iOS 一样的全封闭式 App Store,给开发人员相当高的开发自由度,并且还兼容各种各样的硬件,让软件从此可以天马行空不受拘束。
iOS 和 Android 的应用开发各有特点,但也正是这些特点使 Android 也饱受“流氓”软件的迫害,使得系统的流畅和整洁度远远比不上 iOS。当然,Android 系统里也有很多良心软件,在可见的未来,Android 系统对软件的规范也会越来越强,对“流氓”软件的查杀也会一再改进。
iPhone 越升越卡?Android 越用越卡?
其实苹果手机也不是永远不卡的,简单来说,iPhone 卡顿有两个原因:第一种硬件太差,水平跟不上,说的就是已经发布了多年的手机,对比当前性能差太远,所以使用会有所卡顿;第二种就系统又更新了。升级最新的 iOS 系统会给手机运行带来一定的压力,特别是已经发布多年的 iPhone。
Android 越用越卡的原因除了是开发机制问题,更多的是 APP 造成的,主要是因为占用内存、优化不足、流氓软件影响。既然是 APP 的问题,最终的解决方法就是尽量下载规范一点的 APP,避免一些流氓软件内置的互相唤醒、自启、消息等权限。
总结
响应级别、硬件加速、后台机制、开发机制和应用开发等不同的缘故,造成了以前一直到现在 iOS 比 Android 系统更为流畅的现象。安卓很多手机在不清理后台,硬件未更新的情况下,几乎都会遭遇卡顿的体验,尤其是打开软件加载资源时,在打开比较大的游戏时,多应用切换时,或多或少的都会遇到卡顿甚至是重新加载应用的状况。
但好在硬件配置反超 iPhone 一大截的今天,Android 手机在软件运行流畅度和美观上已经拥有着不弱于 iOS 的体验,特别是在 Android O 之后,谷歌也意识到了系统流畅度对体验的提升,也在逐步的改进系统 UI 的设计。而国内对于 Android 深度定制的各家 UI,也同时拥有着基于 Android 的便捷操作和不差于 iOS 的美观设计。
未来,在改进了系统设计和拥有了强大硬件后的 Android,必定是撼动 iOS 的霸主地位的唯一骑士。目前,iOS 依旧是最为流畅和优秀的手机系统。