安卓16GB运存领先苹果近四倍,为何有人觉得流畅度不如苹果?

为和平而唱


苹果ios比android流畅这个是不争的事实,不过android发展到现在,与苹果的差距已经不是那么的大了,特别是在华为的一些手机上,华为对应用有经过编译优化后,差距已经不再明显,下面就来分析一下为什么安卓流畅度没有ios流畅。

1.安卓的效率低在于开发机制的不同

安卓应用使用java开发。Java的内存管理是通过jvm,达到一定的内存占用量就会触发gc,gc会把用户线程停止掉。因此可能会影响两方面,第一在触发gc的时候卡顿,特别是full gc。长的可能达到几秒甚至几分钟,可能以前有碰到过,现在随着内存的扩充,有些手机比如华为的,内存已经达到了16G,现在基本很少遇到卡几分钟的。

而ios使用Objective-C,编译器是老牌gcc,而这个gcc编译出来的代码又被苹果专为ios架构优化到了极致,运行过程中不需要虚拟机在中间插手,执行效率自然很高。而且Objective-C与c语言一样,内存使用完就释放,所以基本不会因为内存问题导致卡顿。

2.系统设计不同:安卓APP无法统一

大家都知道ios是闭源的,而且苹果唯一指定的应用商店也只有自家的APP Store,这就使得商店内的应用都要经过严格审核才能上架,所以一些比较差的应用无法上架。而且,ios只运行在苹果自家的设备上,对应的软件也只会运行在苹果的设备上,所以开发者可以只针对苹果的设备进行应用优化,而安卓是开源的,安卓厂家有非常多,各家的设备配置都不同,安卓软件需要在各个硬件平台上跑,可能就会引入很多bug,导致异常和卡顿。


3.硬件与软件的契合度不同

如第2点所言,ios只针对苹果自家设备,可以让系统有针对性的对硬件能够发挥的性能进行充分利用,使得系统软件和APP软件的运行效率更高。而安卓系统面对的厂家和设备类型可谓是参差不齐,开发者也不可能针对所有的机器型号进行开发,只能在比较主流的机器上进行测试并保证运行效果,所以他们为了兼顾整个产品线只能不得不降低游戏体验以达到高中低产品可以共用的效果。但是可以负责任的告诉大家,如果买的是各大厂商的旗舰机,根本无需担心卡顿问题。


4.桌面响应优先级不同

当我们使用苹果手机或者是安卓手机时,第一步就是解锁找到相应程序点击进入。ios就表现出来了流畅的一面,但安卓却给人一种卡顿的现象,更别说后续深入玩游戏或者进行其它操控了。这是为什么?

其实这与两个系统的优先级有关,ios对屏幕反应的优先级是最高的,它的响应顺序依次为Touch--Media--Service--Core架构,换句话说当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是Touch这个层级,然后才是媒体(Media),服务(Service)以及Core架构。而Android系统的优先级响应层级则是Application--Framework--Library--Kernal架构,和显示相关的图形图像处理这一部分属于Library,你可以看到到第三位才是它,当你触摸屏幕之后Android系统首先会激活应用,框架然后才是屏幕最后是核心架构。所以ios有“点击即所得”的效果,安卓可能就会慢半拍。这是造成它们流畅度不同的因素之一。

以上4点就是我对ios比安卓流畅的分析,系统上的原因大致也就是这些原因了,其他的一些细节可能就是处理器硬件级别的限制了。


技术阁


现在智能手机品牌众多,而且都非常有名,在竞争激烈的市场条件下,为了获得更大关注度和销量,各大手机厂商不断给手机堆硬件配置,特别是安卓手机品牌,硬件同质化严重,因此只能把最顶级的硬件都给用上,比如现在上2K屏幕还不够,必须120Hz刷新率,运行内存最低8GB,如今直接跳过10GB来到了12GB,三星S20 Ultra顶配版全球首发16GB LPDDR5运行内存,瞬间超越市面上80%的高端电脑内存,领先苹果手机四倍。

安卓手机升级最快的硬件之一就是运行内存,小米,oppo,vivo等高通阵营的旗舰机都有12GB,三星为了保证技术优势,先自己用16GB,半年后在下放给其它品牌。相反,iPhone就非常难,从iPhone7开始苹果才做到一年一个G的增加,现在的iPhone11PRO系列为4GB,与三星S20 U顶配版形成1:4比例,小米等国产旗舰机也领先苹果两倍多一点。

然而很多网友却说苹果4GB比安卓8GB还流畅,和12GB、16GB的安卓手机没有区别,甚至手机用了几年后,苹果4GB流畅度可以超过16GB安卓机。这种说法并非空穴来风,小编之前拿苹果11ProMax(4GB内存)和S20 U版(16GB版本)、小米10Pro(12GB版本)对比,三星和小米并没有因为超大内存而在流畅度方面领先苹果。值得一提的是三星S20 U的系统动画确实做到了媲美ios,非常流畅,或许是三星已经把16GB、120Hz刷新率、优化到位的ONE UI系统这三个参数完美结合。

iPhone和安卓机在运行内存上的差距是操作系统决定的,ios系统可以让iPhone不需要太大的内存,就可以达到高流畅性,而安卓手机厂商只有不断堆内存,才能保证手机流畅度更持久一些。ios系统能做到内存小、够用而且流畅,主要有两个原因,第一是ios系统消息推送机制,APP推送消息时,必须同一经过苹果服务器,然后由苹果服务器发送出去。安卓则不同,APP拥有各种权限,推送消息时必须独立运行,因此即使安卓用户清空后台,实际上还有很多APP仍然处于进程状态,导致运行内存莫名其妙的减少。比如8GB的手机,最理想可用状态是5GB左右,一般都是4.5GB以下,这也就是为何很多安卓用户吐槽运行内存只有一半可用,所以说安卓手机厂商只有上更大的内存,才能保证流畅。

第二是系统后台机制不同,苹果手机的后台应用处于“冻结”状态,不占有内存,4GB内存可以完全用于正在运行的客户端,目前一个手机APP超过4GB很罕见。安卓手机则不行,后台和前台所有软件同时运行,运行内存需要更大一些,否则杀后台很常见。不过从安卓6.0开始就有了很大改善,到现在的安卓10.0已经做得很不错,高端旗舰机流畅性用起来和iPhone没太大区别,当然这是使用一两年左右,三年之后就会和iPhone形成明显差距。

总之安卓系统不彻底改变运行机制,即使安卓手机的运行内存比iPhone大五六倍,流畅度也不会超过ios。






鄂北兄弟


安卓的16GB运存的流畅度和苹果4G预存的流畅度对比,理论上来说安卓肯定是比苹果要快的,但是为啥很多人用气量觉得流畅度还是不如苹果呢。

其实这跟系统有关系。

安卓系统对内存的掌控不够绝对

安卓系统运存的使用取决于各应用进程的申请,为了规范申请,于是安卓对进程搞了一套管理规则。

安卓系统对进程的管理是基于进程的类型。

而进程的类型从重要程度分由高到低依次是:前台进程、可见进程、服务进程、后台进程、空进程。

1、前台进程

顾名思义,前台进程就是目前显示在屏幕上和用户交互的进程,在系统中前端进程数量很少,而这种进程是对用户体验的影响最大,只有系统的内存稀少到不足以维持和用户的基本交互时才会销毁前台进程。因此这种进程重要性是最高的。

2、可见进程

可见进程也拥有一个可视化的界面,但是不能和用户交互,通常可见进程在前台进程的后边,用户退出前台进程后就会显示可见进程。

可见进程一般调用了生命周期方法OnPause(),可见进程比前台进程重要性低,但是在交互方面影响还是很大,因为用户可能随时切换过去,所以系统不会轻易销毁它。

3、服务进程

一个服务进程就是一个Service,它调用了startService,就是UNIX中说的守护进程,对用户不可见,但是保证了一些重要的事件被监听或者维持着某些状态,比如网络数据传输、后台音乐播放、后台下载资源等等。

这类进程在系统内存不足且为了保证前台进程交互的顺利进行的时候被销毁。

4、后台进程

这里叫后台进程可能会和一般意义上的后台进程混淆,要说明的是,android里的后台进程是调用了OnStop()的,可以理解成在不可见进程,就是用户暂时没有和这个进程交互的动作,所以这里后台进程有点“待销毁”的意思。

5、空进程。

这是一种系统缓存机制,其实就是个进程的外壳,当有新进程创建的时候,这个空进程可以加快进程创建速度,当系统内存不足的时候,首先销毁空进程。

基本上只有基于这套规则,你就能申请到内存,理论上来说这样是最可靠的,要多少申请多少,规规使用。

但是在国内则变味了,首先就是推送服务

国外能使用谷歌推送服务,但是国内由于某些原因使用不了谷歌服务,于是开始各手机厂商和软件开始各显神通。

首先是手机厂商,比如小米搞的小米推送,华为搞的华为推送,这些都是可以使用的,但是大多数开发者都不会使用,因为只能在小米或者华为手机上使用。

所以软件开发者更喜欢使用第三方的推送服务或者自己实现推送服务,这样就不用去做适配工作了,而且安全可控。

那问题来了,如果自己实现推送服务的话,必须要保证自己的APP随身“活着”,于是一系列的保活方案出来了,比如在后台播放无声音乐,保留一像素页面等等,这些操作的背后都是需要内存的,基本上所有APP都会做至少一种保活方案,那消耗内存是几何级的。

工信部主推的统一推送联盟,就是为了解决这种现象,既浪费资源又阻碍行业发展,但是目前统一推送联盟还没在市场正式使用,期待吧!

IOS系统对内存拥有绝对的权利

我觉得这是IOS系统与安卓的差别,这也算是闭源的一种好处吧。

IOS不允许APP有退出功能,所有APP的退出都由系统来决定。基本上APP只要退出到后台超过10分钟,就会被销毁,但是会留下一张你当前的页面,就是你双击Home键弹窗看到的APP截图,这种被称为“墓碑机制”。

所以即使苹果内存在小,也不会卡顿的原因,理论上来说,IOS系统永远只会运行一个APP,除了系统应用和哪些必须在后台运行的APP(音乐APP,导航APP等)以外。

另外IOS又一套系统推送服务,所有的APP可以不用自己去实现推送,在APP后台发出推送后,IOS系统接收到后会唤醒对应的APP,来处理推送。

总结

由于国内安卓系统推送服务不够统一,导致各APP都实现保活方案,大量消耗内存,从而导致卡顿,另一反面由于国内软件开发者的不规范开发,无节制申请内存,导致运行APP时卡顿。

而苹果系统由于闭源且对内存拥有绝对的控制权,所以实现了一个系统同一时间只运行一个APP,这样大大节省内存。

我是非著名攻城狮,希望我的回答对您有用,感谢您的点赞支持!


分享到:


相關文章: