文|三易生活
如今Android手机似乎正在陷入一个怪圈,尽管内存变得越来越大,使得12GB内存逐渐普及、18GB内存也已出现,甚至于出现了虚拟内存技术,然而各大手机厂商的系统则在以更强的力度“杀后台”。为此,在收到了越来越多开发者的投诉后,此前在2021年6月谷歌发布了相关问卷,调查Android手机的“杀后台”问题。
在一年后举行的2022 I/O开发者大会上,谷歌方面再度表示正在努力从多个角度尝试解决“杀后台”的问题,并透露Android 13的AOSP源码中添加了对MGLRU(多页面回收策略)的支持,而借助MGLRU,在75%内存占用时减少了85%的后台误杀情况。
早在2018年时,谷歌方面就收到了开发者关于OEM厂商随意杀后台的投诉,当时在AOSP上就已有开发者提交了OEM厂商滥用Android核心权限、施行严苛后台管控机制的文档。到了Android 11,谷歌在与海外网友交流时也曾强调,会遏制手机厂商随意杀后台的行为。
曾几何时,“杀后台”对于Android用户来说是一个非常正面的词汇,有的Android用户会选择用ROOT后安装绿色守护等应用的方式,来实现更好的后台管理,而具备自动清理后台应用的功能也更是成为当时Android手机的标配。那么为什么遏制“杀后台”会在Android 13中,成为谷歌方面宣称的新功能呢?
其实,这是因为矫枉过正。在SoC功耗水平大幅度增长、5G基带成为耗电大户的情况下,智能手机机身尺寸增长有极限、且消费者更加青睐轻薄的设计,都造成了手机厂商对于续航的极度关注,而强制关闭驻留在后台的应用,来节约系统资源就成为了手机厂商提升性能与续航的法宝。
事实上,手机厂商也很无奈,如果允许应用长时间驻留后台,就意味着功耗与性能开销变大,此时用户感知的结果,就是续航不够,总是需要频繁地充电、而且还可能会卡顿。
一旦手机给用户带来这种负反馈,也意味着产品口碑的下降,这在当下这个市场竞争已经极为充分的情况下无疑是不可接受的。所以不仅仅是国内手机厂商,就连海外厂商也在“杀后台”这件事上一个赛一个严苛,甚至到了去年6月,有用户发现某些OEM甚至强制关闭了无障碍服务AccessibilityService。
但实事求是的讲,这“锅”手机厂商最多只能占三分之一,另外三分之一则是谷歌在设计Android时埋下的伏笔。
众所周知,谷歌为Android设计的内存回收机制,是只有当系统回收了所有的缓存后,发现依然不足以提供足够的内存来维持系统和应用的流畅运行后,才会开始根据打开顺序强制关闭部分应用,将其所占用的内存回收。与此同时,Android系统采用的后台机制与iOS的“墓碑机制”不同,iOS是伪多任务、而Android则是“真后台”。
Android的这项设计也就意味着,打开的应用越少系统的负载就越低,用户的使用就越流畅。而Android与Windows尽管同为多任务操作系统,但手机的屏幕显然要远小于PC,这就使得用户同一时间最多只会使用一两个应用,此时更多的应用就必然要被放在后台。
面对这一现实,手机厂商的解决方案就是将后台杀干净,然后用LPDDR5内存、UFS 3.1存储芯片等硬件升级,来降低用户启动应用的等待时间,达到与应用驻留后台近似的效果。
“杀后台”策略发展到现在,就出现了手机厂商遇到将“白名单”之外其他应用被移到后台时干脆就直接将其关闭,让系统获得最好的状态,这也是当初Android手机“游戏模式”的理论基础。但问题是,手机厂商“杀后台”的策略尽管把用户服务周到了,却全然不顾开发者的利益。
开发者需要应用驻留后台,其实主要是为了“保活”。应用为了接受后台消息就需要自行驻留进程,以随时接收消息的推送,不然用户就会出现总是收不到消息的情况,使得体验极为糟糕。例如有的应用在后台挂着挂着就没了,逼得用户只能一遍又一遍地看APP的启动页广告。久而久之,被迫频繁看广告的用户自然就不干了,所以也就有了工信部因“用户反映强烈投诉较多”而对开屏广告进行治理。而损失了部分广告收入的开发者自然也会向谷歌方面投诉,要后者管一管手机厂商无脑杀后台的操作。
当然,“杀后台”之风愈演愈烈,最后三分之一的原因其实是出在开发者自己身上。由于Android生态的自由开放,在Android 8之前,用户当时头疼的并不是后台应用被关闭、而是后台“杀不尽”,彼时许多应用为了保活可谓是各出奇招,选择用链式唤醒、随意缓存、强制自启等方式扎根在后台,直接导致Android背上了“卡顿”的名声。
一句话,开发者和OEM厂商围绕着“杀后台”的矛盾,直接原因就是双方的利益不一致,而且两者之间很难形成利益共同体,少数形成利益共同体的应用也早就进入了手机厂商的白名单。没错,“杀后台”之所以让普通用户感知不明显,就是因为微信、QQ、微博、抖音、淘宝等日常打开频率较高的应用,几乎个个都是手机厂商“白名单”的常客。
国内的Android开发者长期以来在开发应用时,首先需要思考的问题,就是“我的应用能像微信那样一直在手机运行吗?为什么微信一直在手机后台就能收到消息”。毕竟不患寡而患不均,作为普通的Android开发者自然就会向谷歌方面投诉,不然就是永远都无法在巨头环伺下出头。
那么问题来了,谷歌在Android 13上推出的MGLRU(Multi-Generational Least Recently Used),真能改变手机厂商这种频繁“杀后台”的现状吗?从技术角度来看,谷歌方面是很有信心的。因为MGLRU是传统内存管理算法LRU(缓存淘汰)的升级版,而LRU则是基于这样的一种假设,即用户长期不被使用的数据在未来被用到的几率也不大,所以当数据所占内存达到一定阈值时,会移除掉最近最少使用的数据。
但LRU算法的逻辑用在智能手机上可能并不适用,毕竟应用被用户挂在后台时间的早晚与使用频率并没有太多关系。所以MGLRU的策略是将Android后台应用分为几组,每一组都是由上一组被使用的后台应用组成,通过差分扫描来标记时间上存在较长的后台应用,并最终计算出可以安全关闭的应用。根据谷歌方面的说法,MGLRU实现了在75%内存占用时减少了85%的后台误杀情况。
然而MGLRU能够起到的效果有多大,会不会改变手机厂商目前杀后台政策,我们所持有的是相对悲观的态度。毕竟Android的真后台机制就代表着,杀后台的强度越高手机处于低负载的时间就会越多,用户感觉使用流畅的时间就越长。并且更为重要的一点是,应用被杀后台并不会影响到手机厂商的利益,反正有白名单机制存在,真正的利益相关方早就被保护起来了。
因此在我们看来,或许只要手机厂商不再搞出强制关闭AccessibilityService服务这种违反相关条款的操作,谷歌其实是管不了手机厂商第三方ROM是不是会应用MGLRU这件事的。
评论