安卓手机越用越卡原理分析

虽说安卓手机的内存一直往上走,从早期的1GB到现在的6GB,但无论如何,总有人会认为自己的安卓手机越用越不流畅,哪怕是内存加大了也没用!事实上,这的确不是错觉!相比苹果手机仅需1GB内存就可以流畅无比滴用上数年,安卓手机在这方面的体验可以说是相当糟糕!

安卓手机越用越卡原理分析插图

尽管有厂商层豪言自己做的安卓手机永远不卡,不过这厂商最近牛皮吹破天,正在以一种落水狗的形式被大众痛打着,所以这里这永远不卡的可信度有多少,也很难说!而事实上绝大多数安卓手机总避免不了这个问题,那这个问题到底是怎么产生的?我们又该如何应对呢?请往下看!

安卓系统的先天不足以及后天混乱

一般而言,开发者在早期开发安卓系统的时候,都是在Linux上跑个虚拟机,再用JAVA做开发,虽然能减轻开发负担,但在后期优化上的成本增加更多,Java没有提供操作来释放内存(iOS的开发语言Object C能自行控制内存释放),仅仅通过系统的内存回收机制来进行管理,但内存回收是个双刃剑,在进行这个操作时处理器所有线程都要暂停,遇到这种情况,用户当然就会感到卡顿。

和IOS封闭的环境不同,开放的Android必然带来混乱这样的负面作用,碎片化是众所周知的恶果,一些应用为了兼容更多旧款设备,只得继续使用低级别的API,早前的Android 5.1支持的API 级别已达到22了,某些软件还使用的API 9的级别,这是为了更好兼容老安卓版本,但是效率上肯定很惨,除此之外,开发上的开放性更是一个非常大的隐患。

苹果为了获得最好的流畅度,做了非常多的妥协来换取用户体验上好感,比如墓碑式内存管理、优先UI渲染等,这都让IOS变得更为流畅。

而Google其实也在努力,比如说在2012年提出了黄油计划,开始着手解决Android卡顿这个老大难问题,并从Android 5.0开始,将Dalvik虚拟机全面转向ART虚拟机,后者在安装应用的时候会进行预编译,将代码转换为机器语言存储在本地,这样在运行程序时就不用每次都编译一次,执行效率得到大大提升,同时,新的ART模式也降低了每次内存回收时线程暂停的时间,一些额外的优化也可以避免线程频频暂停。

安卓手机越用越卡原理分析插图(1)

所以按道理而言,安卓随着版本的进化,应该是越用越流畅,但是现在都到了安卓7.0了,为何大家还是感到手机卡顿呢?

开放的平台让流氓丛生

之前有人做个测试,一个2GB内存的安卓7.0手机,安装十多个国外的APP,运行起来依然非常流畅,而只要安装了几个国内厂商的APP,整个系统就卡顿起来了!要说国内厂商技术比国外差我相信,但是要说差到这么离谱那则是天方夜谭,那为啥国内厂商的APP就能让安卓运行起来这么吃力呢?

很显然,这就是国内厂商故意而为之了!Android的开放是把双刃剑,开发商掌控着进退大权,而以国人之尿性,抢占市场、提升APP活跃度往往是最重要的,既然我不流氓别人也会流氓,我为什么不更流氓呢?

Android应用开发有四大组件,广播接收器(BroadcastReceiver,以下简称Receiver)就是其中之一,它用来接收来自系统和应用中的广播,你也可以理解它是一个监听器,比如当电量变化时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户保存进度或进入省电模式等;当有电话进来,也会产生一条广播,就会通知电话接听或电话号码判断等。

在Android中,全局的Receiver就近百种,可以监听各色各样的状态变化,比如开关机、通电断电、网络状态变化、电量变化、安装卸载应用、电话呼出呼入、SD卡变化等。开放的Android允许应用程序注册任意个Receiver, 这也成为流氓应用滋生的温床,不良的开发者向系统注册多个静态Receiver,接受各种广播通知,然后执行相应的Activity,比如自启动。

安卓手机越用越卡原理分析插图(2)

举个例子,一个国外的APP可能就注册一两个Receiver,而像百度、腾讯这样的厂商,为了接受各种广播以及让用户在手机应用过程中进行各种各样的动作,他们就会注册几十个的Receiver。

Android越用越卡的主要原因在于,后台有大量应用在默默运行,而这些应用根本就是清理不掉的,它们会在收到各种各样的Receiver通知后并再度启动,而苹果手机系统iOS中被杀掉的后台进程再启动的方法很有限,简单的说,iOS是真的能清理内存,而Android中许多应用挥之不去,不断重生,各种进程与服务在后台偷偷运行,从而引起系统卡顿与耗电……

国内无良厂商就是卡的主因

恩,不客气的说,很多国产APP的作用除了APP本身的用途外,剩下就是让你的手机卡顿和耗电……而且从利益关系来看,他们是不会改变这点的!所以安卓手机卡顿一部分原因可以归咎于谷歌在开放性上的无助,但更大原因还是国内的无良厂商太多了!

我们在这里做一个对比,同为电子商务软件,用国外的eBAY和国内的淘宝来比较一下,我们看看这两个软件在自启动上的方式是什么!

安卓手机越用越卡原理分析插图(3)

一看就知道,ebay只有三种正常的自启动,而淘宝APP呢?更改失去也要启动,设置时间也要启动,应用卸载也要启动……也就是说当用户不需要在安卓手机运行淘宝的时候,做其他一些事情,淘宝这个APP就不知不觉的启动了……说到这里略微想骂娘,你TM有本事,怎么不在我吃饭的时候自启动啊!用户各种和淘宝没半毛关系的操作,都会引起淘宝的自启动,类似软件在国内用户手机中何其多,你的手机怎么会不卡?这么多内存又有什么意义呢?

嗯,告诉大家,百度某些安卓APP,可以做到19种自启动模式……又想骂娘了!这下知道为什么安卓手机会这么卡了吧?

悄悄说:如果用户手机装了一系列腾讯、百度以及阿里巴巴的安卓APP,那恭喜你,当你打开某个APP,这个APP公司旗下的其他APP很可能就会被关联上同时启动……恩,比如打开百度地图,如果你的手机中还有百度新闻、百度输入法、百度糯米等软件,那么这些软件会如同吃了春药一般兴奋,纷纷自启动……你说你的手机卡不卡?不卡算你赢!

如何应对安卓手机卡顿?

面对这些不断重生的APP,清理内存实际上是没什么卵用,因为清理了它就又会启动了,从根本意义上而言,我们需要的是让这类APP不被唤醒,个人认为有这么几种办法!

  1. 使用更合理的底层ROM,某些手机的ROM已经开始解决这类问题,比如之前魅族的Flyme,可以切断关联唤醒,算是一个进步!
  2. 尽量不用BAT的APP,这点当然很难,比如淘宝和支付宝就无法避免!所以说只能尽量避免使用几个流氓的APP,能替代就替代吧,比如百度地图就用高德地图替代!浏览器什么的也别这些公司的。
  3. 用一些第三方管理工具,要能切断关联唤醒的管理工具,比如360卫士,当然不代表我就推荐360……用LBE也可以!反正类似的就行!
  4. 要么安卓用户换个手机?用苹果试试?

现在大家知道安卓手机为何越用越卡的原因了吧!从根本而言,还是国内厂商无底线逐利所导致的,在加上谷歌国内业务萎靡,监管不够,这让安卓手机卡顿的问题有点无解!其他什么不想说了,还是希望国内厂商有点良心吧!

看完了?留个评分呗?
[0人评了分,平均: 0/5]

本站原创文章皆遵循“署名-非商业性使用-相同方式共享 3.0 (CC BY-NC-SA 3.0)”。转载请保留以下标注:

原文来源:《安卓手机越用越卡原理分析》

发表评论

邮箱地址不会被公开。

返回顶部