iOS13.2疯狂杀后台的背后,是苹果为提升系统稳定的良苦用心?
苹果最近让人很“糟心”。先是10月30日在全球范围内短暂关闭了关键词热度接口,让不少开发者、运营人员一脸懵逼。紧接着又传出新申请的开发者账号无法通过支付完成注册,导致不少应用产品无法如期上架。
当然,近来苹果最让人糟心的还属iOS 13.2系统,其“疯狂杀后台”的迷之操作让不少用户苦不堪言。
前些日子,有不少iOS 13.2的用户都反(吐)馈(槽)说他们的iPhone内存管理机制突然就抽风了,多个App都遭遇到“杀后台”的现象。有的严重到稍微切换不同的应用,后台中停留没多久的应用就需要重新打开才行,这也导致部分应用出现数据丢失的情况。
举个例子来说,就是你接个电话回来可能会发现你之前写到一半的邮件没了,之前打的游戏进度丢失了,看一半的视频被关了等等“灾难性”现象,这些足以让用户怨声载道。
而关于iOS 13.2疯狂杀后台的原因,此前有不少用户将矛头指向微信。因为有开发者在分析了系统日志后发现微信在后台频频调用wakeup,平均每秒唤醒超过300次,因此猜测是微信滥用唤醒机制才导致iOS 13.2杀后台。
但事实上微信也只是一个受害者,包括像YouTube、Instagram等App,甚至还有苹果自家的Safari,它们都惨遭iOS 13.2所支配,哪怕两个应用切换间隔仅几秒也会被杀得一干二净。
那么是什么原因导致iOS 13.2疯狂杀后台呢?
观点1:与应用后台频频调用Wakeup无关
首先我们要弄清楚iOS日志里记录的“Wakeup”并不是App使用意义上的“唤醒”,而是线程级别的唤醒。通过查询资料获悉,Wakeup指的是线程与线程的通讯,当发生异常情况,不管是App代码或系统层面,会频繁地进行线程唤醒。
以微信为例,近来发现的微信后台被多次“唤醒”,实际上并非App的唤醒,而是微信后台进程的唤醒。一般在使用App时,如果关闭屏幕,或者进入另外一个App,苹果系统会把其所有进程停下来。
但有时候,因为需要持续获取用户定位,计算行走路线等,App的进程是不能完全停下来的。这个时候,如果App还想继续运行这些功能,则需要开启一个后台进程。然而,苹果为了系统稳定起见,不会允许这些后台进程一直运行,一定程度上会杀死这些后台进程,也就是“杀后台”。
然后这就产生了一个循环的现象,后台进程在检测到自己将要被苹果系统杀死的时候,会打开一个新的进程。所谓“Wakeup”就是指在这种情况下打开一个新的进程,继续进行上一个被杀死进程的功能。
而如果苹果系统频繁杀死后台进程,后台进程就会频繁的“Wakeup”,于是这就出现了微信这种平均每秒唤醒超过300次的情况。换句话说,微信这种“频繁唤醒”的情况本来就是App在面对苹果系统“杀后台”特性的解决方案(不过“频繁唤醒”并非任何情况下都有效,进入后台的App有时候还是会被“彻底杀死”,再次打开就会重新打开APP),不是造成iOS 13.2疯狂杀后台的原因。
观点2:苹果自己偷偷增加了“彻底杀后台”的概率
有网友表示“iOS 13.2疯狂杀后台”的现象在iOS 13.2测试版中就已存在,期间也不断有用户向苹果报告问题,结果在正式版中这个Bug非但没解决,反而变本加厉。
这很有可能是苹果在更新到iOS 13.2后,增加了“彻底杀后台”的概率,以至于之前使用的“频繁唤醒”的解决方案已经不管用了,所以才导致如今的问题。如果真是如此,那么目前苹果还未修改Bug或是降低“彻底杀后台”的概率,各个应用App可以改进自身应对“杀后台”特性的解决方案来解决被频繁杀后台的危机。
目前来看微信似乎想到了这一层面,在微信最新的回应里,微信称“近日,我们收到少量用户反馈,用户在升级iOS 13.2版本后,App回到手机桌面或锁屏后可能会被系统关闭,下次打开需要重新启动。目前,通过紧急联调,该问题已基本修复。如个别用户在使用上仍有问题,可联系我们解决。”
是的,在苹果还没自我修复Bug前,微信就已经能够自主解决问题。这说明什么呢?这个Bug是苹果有意而为之?或者说苹果就压根没有把这个当做Bug,本来就是一种为提升系统稳定的尝试。你怎么看?
本文由蝉大师原创,首发于公众号:蝉大师(ID:chandashi88)