iOS 和 安卓的差别

来源:互联网 发布:网络剧广告植入方案 编辑:程序博客网 时间:2024/06/04 23:31

iOS和安卓的差别

问题

1.同样运行内存的手机,苹果的画质流畅,安卓卡顿?

2.当我们使用手机时,解锁、点击等操作iOS系统就表现出了流畅的一面,但Android产品却给人一种反应慢、不跟手的情况,这是为什么?


原因一 :“伪后台”

1.后台机制详细解析

    众所周知,安卓手机一直都以“真后台”机制著称,“真后台”就是当你打开一个APP后,它会一直在后台运行,除非你主动去关闭或者内存不够用了。而且任何应用都可以同时进行,它们可以同时连接网络,GPS定位,推送消息等等,这样的后台机制便是”真后台“。

    苹果手机的iOS系统是“伪后台”,当你按下Home键回到桌面的时候,你之前运行的程序大多数都会冻结,你可以理解为从内存中写入到ROM中。等到你再打开这个APP,由于iOS重新加载的过程很快,你几乎察觉不到异常。消息推送是通过统一APNS推送进行的,保障即使app在杀死的状态也能收到推送。

    当你在使用iPhone手机时,除了正在使用或个别特殊APP是真正运行的,大部分APP都被冻结了(也叫墓碑机制)。要想证明这一点很简单,比如你用iPhone看视频或者玩游戏,当你切出去的时候它们会自动暂停在那里,视频也不会再继续缓冲,因为这个APP被冻结了。

    当你点击Home键后,当前程序转入后台,后台应用以墓碑的形式(退出前的状态)保存在内存中,用户可以快速恢复。但是苹果对后台的限制非常严格,只有一些特殊应用可以在后台真正运行,比如音频播放类,VoIP类,位置服务等。

    如果不做任何配置的话,你的应用最多只能在后台运行5秒,之后就会被挂起 (存于内存但不运行),如果你配置了后台运行(如需下载),大概在594秒(9.9分钟)时进程停止,程序同样也会被挂起,一旦系统需要内存了,最早的后台进程就会被杀掉以释放内存。


2.2013年后,iOS7后 从伪后台到智能后台。

    从iOS 7开始,一旦手机锁屏,后台应用将也会很快被暂停(不是像之前那样要一直运行到完成任务或超时),之后当系统被唤醒时(比如接到电话),那些暂停的后台应用也会一起继续运行。这样的好处是,系统不会因为第三方应用在后台运行而长时间处于唤醒状态,对电池续航有益,而且第三方应用的保持时间也更久了(虽然真正的活跃时间是一样的)。


    现在的iOS后台管理是相当智能的,它会记忆用户的一些行为习惯,比如你每天早上都要打开A应用,中午会打开B应用,晚上会打开A应用,经过一段时间的记忆后,iOS会在早上、中午、晚上的适当时间唤醒或启动相应的A、B、A应用,提升用户体验。

新增三种后台模式:Background Fetch、Silent Remote Notifications和Background Transfer Service。

后台获取(background fetch)
    iOS7以前的应用在后台是不能获取信息的。应用必须再打开的时候才能联网获取信息。iOS7以后,应用在后台就可以直接获取网络上的信息。比如天气可以在后台获取信息进行刷新,微信也可以在后台自动更新朋友圈的信息。不过同样为了保证续航,更新的间隔时间由系统根据用户使用情况自行决定,不会让第三方应用随意的在后台启动和获取信息的。
推送唤醒(remote notifications)
    iOS7以前,当你收到推送消息时,你需要先打开应用,等待应用从网络上获取推送的信息之后,才能将信息呈现出来。而iOS7改变了这一过程。当系统收到推送消息时,不是首先提醒用户,而是唤醒对应的应用,让应用在后台获取对应的信息。当信息处理完成后,再提醒用户。一个很小的改变,但是可以很大的提升用户体验。同样,iOS系统也会限制这种推送消息的频率,防止系统被频繁唤醒影响续航。
后台传输(background transfer services)
    iOS7以前,应用程序在大量数据的上传下载这方面限制是比较多的。应用只能在前台进行这种数据传输,你不能做其他事情。因为一旦退到后台之后,应用只能被允许运行一段时间(最长10分钟),很难完成这种大量数据的传输。而iOS7推出了后台传输功能,应用在退到后台之后,可以将这种上传和下载数据交给iOS系统来维护和管理。这种后台数据传输没有时间的限制,传输过程中用户也可以继续使用其他应用。同样为了保持电力续航和保护数据流量,这种后台传输仅限WIFI网络。

原因二:渲染机制不同

    Android没有iOS流畅的根本的原因是,iOS的UI渲染采用实时优先级,而Android的UI渲染遵循传统电脑模式的主线程普通优先级。通俗点说就是iOS对屏幕反应的优先级最高,用户只要触摸屏幕,系统就会最优先处理屏幕显示这个层级,马上给出动画效果,然后才处理媒体、服务、核心的架构。

    而安卓则是追求进程优先,触摸屏幕后的手机屏幕显示和动画效果放在比较后的优先级。同样打开相同的网页,Android手机就会直接将整个网页全部加载同时渲染HTML,这无疑就增加了处理器的压力。因此对于Android来说,一个高效的双核处理器是很重要的。在iOS中UI渲染过程具有绝对的优先等级,当用户接触到iPhone的触摸屏后,iOS中所有的进程都将停止,UI线程拦截了所有的事件,系统会将所有资源用于渲染UI过程,以保证用户界面的实时渲染优先级。而在Android系统中UI渲染过程的优先级别却没有那么高,也就是说当你触摸Android手机屏幕的时候,系统后台的程序并没有停止,仍然在继续运行之中,比如下载和查收短信,这样系统UI获得的资源就不够,这就是Android系统不流畅的原因。

iOS 系统框架

Core OS : 位于iOS系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。

Core Services : 第二层是核心服务层,我们可以通过它来访问iOS的一些服务。

Media : 第三层是媒体层,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。

Cocoa Touch : 最上面一层是可触摸层,这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作


    而Android系统的优先级响应层级则是Application(应用)--Framework(框架)--Library(图像处理)--Kernal架构,和显示相关的图形图像处理这一部分属于Library,你可以看到第三位才是它,当你触摸屏幕之后Android系统首先会激活应用,框架然后才是屏幕最后是核心架构。

原因三:硬件工作区别,iOS基于GPU加速

    为iOS系统对于图形的处理都是基于GPU(GPU理器)硬件加速,可以减轻CPU运算的压力但是Android为了适配不同硬件的手机,需要满足各种差异配置。

    所以很多图形特效处理大部分都要靠程序本身进行加速和渲染,并严重依赖CPU运算的操作自然会加大处理器的负荷,从而出现卡顿的问题。

    虽然在Android4.0以后的系统中都默认开启了硬件加速,但依旧无法做到运用GPU加速全部的图形特效。

原因四:系统设计区别,安卓APP无法统一

    上面的两个原因,似乎已经可以大概解释为什么iOS相比Android更为流畅的原因。但最终还有一个问题是应用程序,在Android上似乎系统自带的软件很少出现卡顿,而一旦安装一些第三方应用后,卡顿问题就逐渐出现,这究竟是为什么?

    因为iOS系统的封闭性,对于APP的开发框架有极为严格的限制,所以APP在iOS系统上运行对象比较单一。

原因五:效率更高

    另外,安卓系统的编程语言是Java,特点是通用性强,效率低。而iOS的则为OC,专一性强,效率高。

    iOS系统本身优化得很好,而且程序也是直接执行,所以效率很高。而安卓系统是通过Java虚拟机来执行,系统需要占用大量内存来换取执行速度,也就是要绕了个大圈才执行程序,所以效率低很多。

    OC的高效率 源于Runtime机制





原创粉丝点击