极客实验室
安卓系统最大的问题,就是系统卡顿。
一部手机,尤其是被用过一年之后,往往会变得越来越卡,卡到app半天打不开;卡到好不容易打开app,操作两下又死机了;卡到要经常重启才能缓解卡顿;卡到手机发烫,让人时刻担心手机会爆炸……
有时候卡起来,真能急死人。
卡顿问题人神共愤,消费者受不了,手机厂商也愁到头大。为了解决卡顿问题,安卓手机厂商们使出了浑身解数,一方面不断加大手机运行内存——2gb、4gb、8gb、12gb;另一方面,对于频繁自启动的部分应用,采用了“杀后台”的处理方式,以此减少内存占用。
应用开发者当然不想自己软件的后台进程被无端“杀掉”,有的会利用安卓的悬浮窗机制,在用户关闭应用时缩小到某个角落,以此保持在线进程;还有的会抱团取暖,利用安卓的“广播接收器”链式触发后台自启动。
广播接收器是系统响应应用需求的一种机制。
另外,手机厂商往往自己还有一些预装的app,会提前设置在系统白名单里,防止被杀后台。这就是安卓手机内存越做越大却依然越来越卡的原因。
这种僵局,只能使得手机厂商更加激进地实行杀后台策略,但这就导致一些用户使用软件的进程会被恶意中断。
我们常常能遇到如下场景——
当你正在打着一盘游戏,这时领导在工作群发通知,你赶紧点开群回复“收到”,结果返回后发现游戏被杀后台了,要重新进入,此时你的心情必如一片荒原,荒原之上是一万头羊驼在奔腾,前方则是一道深渊,深渊的底部赫然写着一行大字——“换手机吧”。
想象一下,游戏到紧要关头,结果因为回复一条信息就被杀后台……
当你安装了一款睡眠监测app,想监测一下自己的睡眠质量、知道自己晚上梦话说了什么,结果第二天起床一看,因为息屏,监测app被杀后台了,啥也没监测到。
如果说上述需求属于“不痛不痒”的量级,算得上还可以忍受,那么对于视力障碍者来说,就是忍无可忍了。据雷科技报道,2018年就有开发者吐槽说,自己开发的无障碍应用经常被系统无端杀后台,而这些应用原本需要在后台静默运行,才能帮助视障者读屏操作手机。
无障碍应用都被杀后台,这让视障者如何是好?
与安卓相对,苹果的处理方式干脆利索,因为苹果压根就没有“后台”,所以自然也不会存在后台应用过多导致系统卡顿的问题。
没有后台的苹果,又是如何做到多应用切换时能调取离开应用前的界面呢?这就是苹果“墓碑”机制的作用,苹果在应用被切换之前会截取留存切换时的页面,在用户返回时还原到原有界面即可。虽然真实过程比这个复杂得多,但基本原理大致如此。
苹果的流畅性,安卓的确比不来。
安卓原本就是基于linux系统改造的多后台处理系统,如果引入“墓碑”机制会有许多技术难题。但作为安卓的开发者,谷歌自然也不会坐看安卓如此堕落。
5月11日,谷歌将会举行“i/o大会”,届时谷歌将会发布最新版操作系统android 13。据xda报道,谷歌为android 13内核添加了一段与内存、多任务优化有关的代码,主要涉及mglru(multi-generational least recently used),即多页面回收策略。
mglru已经在chrome os上测试过,现在要应用到android 13。
根据谷歌测试,借助mglru,kswapd cpu使用率降低了40%(kswapd是管理虚拟内存的进程)。此外,在75%内存占用时减少了85%的后台误杀情况,在50%的内存占用时降低了18%的渲染延迟。
也就是说,mglru将同时解决杀后台和系统卡顿两大关键问题,有利于提高系统流畅性的同时增强应用的后台体验。
看来,安卓手机也要像苹果手机一样快到飞起了,你期待吗?
评论30