与ios相比,android为什么越用越卡

来源:互联网 发布:锁骨链一套淘宝 编辑:程序博客网 时间:2024/06/01 09:24

  这是大家的普遍体验:android用着用着就很卡,而且经常要许多不必要的清理操作

                 

 但是苹果手机,基本上不会产生如此问题,而且用几年都可以很流畅。

所以,普遍都会觉得苹果比android手机好用,看起来苹果手机都要比android手机高端。

        

但问题是,问什么android用起来会比苹果手机卡顿呢?

        

首先,需要知道卡顿的产生原因。

举个例子,旧时的电影放映,就是一幅一幅图像在同一位置上以极高的速度连环变换,如果是播放一个连环动作,看起来,就像真正的运动。

其实,android在操作中也是这样的一个个图像生成和销毁来现实界面的变化,

比如说 a->b->c,在操作过后,这三幅图像连环播放,但是从销毁a到生成b,如果时间小于1/20秒,就可以生成b,如果时间大于1/20秒,那么b这个页面,就不会生成,然后直接是从a->c,看起来会有种卡顿的感觉。

那么是为什么会产生生成图像时间大于1/20秒的结果呢?

是因为:

(1)      ios系统架构和android系统架构所决定的:

ios的系统架构是Touch--Media--Service—Core,如图1所示

android的系统架构是Application--Framework--Library—Kernal,如图2所示

当分别对ios系统的手机和android系统的手机进行屏幕操作,屏幕生成图像进行响应的位置不一样,ios系统的图像生成在第一层touch完成,android系统的图像生成在第三层library完成,因此在同等配置下(同等操作速度下),android系统的运算量相比ios的大,所以更有可能产生生成图像时间大于1/20。当然这个还不是卡顿的主要原因,因为现在一般来说,android系统的手机的硬件配置都会比ios系统的手机高很多,在这个先天不足的差距也是越来越少。

        

                                                                    图1   IOS系统架构

 

 

                                                            图2   Android系统架构

 

(2)      ios系统和android系统内存的回收机制不同:

ios系统所用的Object C能够自行控制内存释放。但是,android所用的java没有任何操作来释放内存,所以系统是通过内存回收机制来进行管理,然后再回收内存的时候,所有的线程都是要暂停的,包括页面生成图像,也是要暂停的,因此也会造成卡顿

在2012年google提出了黄油计划,从android5.0开始,从Dalivik虚拟机全面转向ART虚拟机,ART虚拟机在安装是会进行预编译,将代码转化为机器代码存储在本地,所以不需要在运行程序一次就编译一次,提高执行效率。同时,新的ART模式减少了内存回收的时间,一些额外优化避免内存回收的发生频率。

(3)      ios对图形的处理是基于GPU的加速,而android系统对CPU运算的操作更加

赖。

Android需要非常依赖cpu的原因是由于android系统需要适配不同的手机硬件,满足各种差异配置,所以很多图形需要靠程序本身进行加速和渲染,所以特别依赖CPU运算操作,加大了CPU的运算操作,从而出现图像生成时间大于1/20的现象。在更高的版本android4.0以上都进行了硬件加速,但也没有办法做到全都靠GPU进行加速。

  除了以上先天不足的原因,还有APP的原因:

         当现在的旗舰新机不断安装APP(特别是国产的),流畅度明显下降,用户开始叫卡。

         为什么?

(4)      android有四大组件,其中一个是接收系统和应用的广播,是一个监听器,当系统发生变化或者APP发送广播,如果后台有静态注册,就会监听并处理这些变化。

其中一个,就接收发出来的广播通知,执行相应的Activity,比如自启动和联合启动。

                自启动,当某个APP运行以后,然后关闭,接下来如果有几种系统的变化发生,该APP会自己去启动,如下所示:

        

如我国某宝和ebay对比,ebay自启动就三个,然后某宝的自启动方式就有九个,问题是存储空间不足、应用卸载关淘宝什么事呢?

 

 

         然后是关联唤醒

         顾名思义,就是当某个应用启动,它会在后台偷偷启动其他应用,比如说阿里系APP会自己启动该系内自己的应用,百度也是一样。

         例如,当运行"百度地图"时,后台会打开"百度云",当运行"手机淘宝时","支付宝"也同时在后台开启,这些都是你看不见的,你手机中的 APP 越多,那么关联唤醒的APP 就会越多。

 

         各种启动在后台应用,会极大地占据内存,导致运行速度变慢,因此卡顿。


面对这样的情况,需要做好的是:

         管理好自启动的情况:

(1)      尽量不要使用频率极低的APP

(2)      如果有阿里系或者百度系等等的软件,除了必备的软件如支付宝、微信,其他的尽量替换

(3)      对于高级玩家可以参考使用xposed+绿色守护,详情百度之



参考:1.本来都没iOS流畅 Android手机为啥还越用越卡?出处:超能网   编辑:鲲鹏   

2. 四大因素决定 浅析iOS为什么比安卓流畅 出处:中关村在线    编辑:

王亚南
   

0 0
原创粉丝点击