这是大家的普遍体验: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系统的手机高很多,在这个先天不足的差距也是越来越少。
(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+绿色守护,详情百度之