1、首先是iOS和安卓的渲染机制不同,iOS的UI渲染采用的是实时优先级,而安卓的UI渲染采用的是遵循pc模式的主线程普通优先级。简单的说就是iOS对屏幕反应的优先级很高,用户只要触摸屏幕,系统就会最先处理屏幕显示这个层级,马上给你动画效果,然后才处理媒体,服务和核心的架构等;而安卓则是追求进程优先,触摸屏幕后的手机屏幕显示和动画效果的优先级放在后面,举个例子:比如安卓手机和iPhone同事打开相同的网页,安卓手机就会直接将整个网页全部加载同时渲染超文本,这无疑是增加了处理器的压力。
2、在iOS中,UI渲染过程具有绝对的优先等级,当用户接触到iPhone的触摸屏后,iOS中所有的进程都将停止,UI线程拦截所有的事件,系统会将所有资源用于渲染UI的过程,以保证用户界面的实时渲染优先级。而在安卓系统中,UI渲染过程的优先级别却没那么高。也就是说当你触摸安卓手机屏幕时,系统后台的程序没有完全停止,而是依然继续运行中,这就是安卓和iOS在流畅度差别的最主要原因了。
3、再就是后台机制的不同。安卓手机的后台是真后台,像PC一样,将应用保留在RAM中,当使用HOME键退出应用时,程序实际上并没有完全退出,而是被系统挂在了后台。这就是为什么我们关掉了聊天软件后依然能够收到消息通知的原因了。而且包括平时收到的一些垃圾广告推送,也是后台有程序运行的原因。所以这就导致了一个现象,从内存使用上来看,安卓手机开机时内存使用很低,但若不进行清理内存,正常使用一天,内存占用会越来越高,而内存占用越高,使用起来流畅度就会越低,所以安卓手机需要更大的PAM来提升用户体验。而iOS采用的伪后台,当用户按HOME键退出应用时,iOS其实是关闭了程序,只保留应用的图像入喉,默认将应用的最后的运行数据记录在RAM中,那为什么iPhone也可以收到推送消息呢?这是因为昂用户从用用中选择开启推送后系统会增加一些进程,这些进程会从苹果服务器接收消息,然后再通过服务器发给用户,苹果服务器在这里是起到了中转的作用。而正是因为有了这一系列的机制,所以即便iPhone的配置相比于同类安卓机低了很多,iOS还是会给人更加流畅的感觉。
4、再次,就是编程语言的不同,关于JAVA和OC他们是各有千秋,iOS执行程序的效率比安卓高,安卓系统的编程语言是Java,他的特点是通用性强;但相对率较低,而OC它的特点是专一性强,效率相对较高。而且,iOS系统本身优化的较好,而且程序也是直接执行,所以效率很高;而安卓系统是通过JAVA虚拟机来执行,系统需要占用大量内存来换取执行速度,这也就是要绕很大一个圈来执行程序,所以效率要低很多。
5、最后,APP厂商喜欢给iPhone做优化。由于iOS的封闭性,App
Store里面的App都是在iPhone等产品上执行,硬件利用效率非常高,而且分辨率大小和硬件配置等参数也比较稳定,优化工作也容易进行;而安卓手机的硬件配置天天都在变,这使得工作量很大,开发者不可能针对所有的手机型号进行开发,所以只能在比较主流的机型上进行测试并保证运行流畅,这就导致了很多没有被优化的安卓手机很难得到流畅的使用体验!