安卓

注册

 

发新话题 回复该主题

安卓版墓碑机制火了,而隐藏在这背后的 [复制链接]

1#

小伊评科技

最近,关于安卓版「墓碑机制」的消息在数码圈火了起来。用户通过打开开发者模式,然后打开「暂停执行已缓存的应用」

①这里也先科普一下什么是「墓碑机制」。

我们传统印象中的多任务处理方式,就是Windows上的后台,俗称为“真后台”。

在这套体系下,后台应用和前台应有基本没有本质的区别,只要配置足够,消费者可以同时在内存中预留N个应用程序,因为电脑是一个有源输入设备,不需要去考虑电池消耗的问题。

但是手机这种移动设备就不一样了,因为手机是一个需要依靠蓄电池维持能量输入的设备,所以它不可能采用类似Windows的后台管理策略,必须要建立起一套合理的退出机制,以此来保证设备的“持久性”也就是续航以及前台应用的体验。

而所谓「墓碑机制」原本就是指IOS系统上的一种多任务的处理策略。

解释起来很复杂,简单来讲,在IOS平台,手机的资源会优先向台前且正在活跃的进程倾斜,而被用户放在后台的程序会被设定为非活跃状态,非活跃状态在经过一个恒定的时间之后(10分钟),就会被设定为暂停状态。

在该状态下,其后台进程不会占用CPU的资源,只会占用内存容量,而当系统监测内存容量紧张的时候,该应用也会被杀掉,但是系统会将其所处的状态保留在闪存当中(可以理解为虚拟内存),这就是“应用墓碑”,下一次用户在打开的时候,该状态会被重新赋予。

这就是苹果的后台处理机制。简单来说,IOS系统的硬件资源会全部供给给前台应用,后台应用的资源占用会被极大幅度的削减。

而且这种机制是被系统限定死的,是苹果主导的。应用厂商根本无力对抗,这一点我们后续会讨论,大家先记着,我先标红。

②我们再来看看安卓的后台机制。

很多人认为安卓的后台机制很混乱,其实不是,原生安卓系统的内存处理机制其实也是非常完善的,它同样也会将进程分为很多个层次,有前台进程,可见进程,二级进程,隐藏进程,内容提供器,空应用等状态,这些状态的优先级依次减弱。

当系统检测到内存不足的情况下,系统根据APP优先级的不同将应用进行分批的处理,以此来释放内存,这也就是大名鼎鼎的LMK(LowMemoryKiller)机制,这套逻辑本质上没什么问题。

换句话说,原生的安卓系统是等到系统判断内存即将不足的情况下才会开始清理内存中的进程,而在被清理之前,后台的程序会同时占用CPU资源和内存资源。

这一点和IOS的后台机制是有些不同,因为IOS系统上的后台系统在10分钟无操作之后,就不再需要消耗CPU资源。所以,相比较而言,IOS的做法会更加的节省资源,也就会更加的省电,这就是为什么iPhone13到现在还敢用4G运存,电池容量明明那么小却比安卓机器更耐用的原因。

而这一次突然爆火的「暂停执行已缓存的应用」的效果是类似的,简单来说就是让放入后台的程序不再占用CPU的资源,只是在内存中保留一个状态了,以此来降低耗电量和CPU的压力。

看到这,大家觉得这不是挺好吗?初衷是挺好的,但是这就会引发一个新的问题——“一些需要常驻后台的进程会被无差别地杀掉”。

其中最典型的就是WX等即时通讯类的APP,因为他们需要推送消息,另外还有一些就是需要长时间驻留后台的健康应用,运动检测应用等可能都会受到影响。

那么苹果是怎么做的呢?苹果给开发者专门预留了可以常驻后台的接口,应用开发者在开发应用的时候可以根据业务需求调用不同的接口,譬如BackgroundAudio(后台音频接口),可以让音乐播放软件在后台主;再譬如RemoteNotification接口,可以让推送的信息在后台直接刷新等等。

而这些接口的调用都会受到苹果APPStore上架时的严格审核,譬如一个根本用不到音频接口的APP,非要弄一个常驻后台的APP接口,那么审核的时候就会直接驳回,严格的审核模式保证了应用的质量,同时也保证了体验。

而安卓这边就很麻烦了,如果我们要启用非常严格的后台管控措施,那么也就是一个一损俱损的局面。而且我要告诉大家的是,目前国内定制ROM的后台管控措施其实本身就很严格,动不动就会杀掉一些后台进程。

那么,安卓厂商为什么要如此严格地管理后台程序呢?主要是因为那些应用开发者实在太过分了。在安卓市场上的应用开发者,为了能够让自己的应用常驻后台,所作所为可谓是令人发指。

譬如什么设置透明悬浮窗,相互唤醒,关联启动等等层出不穷,你去搜一下“安卓常驻后台技巧”就会有一大堆方法出来,他们的本质就是让自己的应用进程保持高的优先级,以此来逃脱LMK(LowMemoryKiller)机制的处理。

如果这种行为不进行约束,消费者的体验会非常差劲。所以,手机厂商不得不采用更严格的管控手段,这就是一个非常矛盾的局面——管得严,消费者的体验会受损;管的松,消费者体验也会受损。

而隐藏在这一切背后的根源所在就是——「国内手机厂商对于应用开发者的约束手段非常有限。」

因为安卓手机厂商的应用市场是完全分散的,小米有小米的应用市场,华为有华为的,OPPO有OPPO的,这就导致国内安卓生态是完全割裂的,无法凝成一股绳。

那么大家思考一下,如果一个手机厂商对于应用的审查过于严格,会导致什么情况?很多应用厂商就不登陆你的应用市场,那么到头来受损的是谁?毫无疑问是手机厂商,因为安卓手机的可替代性太强了,而那些大厂的APP本身就是流氓的头。(链式调用SDK的持有者都是这些大厂)

但是在IOS系统上可就不一样了,因为使用IOS系统的就只有苹果一家,拥有一群忠诚度非常高且不可替代的粉丝群体,如果一个应用不上架IOS平台,也就意味着他要失去一大群消费群体,试问哪个应用厂商敢这么做?当年TX,AL等大厂和iPhone的争端最后基本都以应用厂商屈服而告终。

包括统一推送也是在这里面的一环罢了,统一推送之所以一直搞不起来,不是因为手机厂商不合作,而是应用开发者不愿意,因为这里面已经形成了一个固定的利益链条,冰冻三尺非一日之寒。

分享 转发
TOP
发新话题 回复该主题