微信为什么频繁“唤醒”,真的是BUG吗?资深开发者说明了原因

2019-11-05     指尖科技说

微信被“杀后台”

前几天苹果系统发布了最新的13.2版本后,微信被爆在后台频繁“唤醒”达几万次,由于次数太多,导致被苹果系统“杀死”。

关闭手机电源,或者退出微信,微信都会被“杀死”,再次打开后重启。

如果此时正在查看资料,或者聊天,则之前看的资料可能再也看不到,聊天也要重新打开,体验很不好,而支付宝体系的部分软件并没有类似的问题。

于是可以不少人推测,是微信IOS版的BUG,而且微信也公开消息称已经关注该事件,并在努力解决问题。

但指尖科技说咨询了资深IOS开发工程师,发现这次的问题可能不是这么简单。

“频繁唤醒”原本就是一种解决方案

首先,微信后台被多次“唤醒”,实际上并非APP的唤醒,而是微信后台进程的唤醒。

一般用APP时,如果关闭屏幕,或者进入另外一个APP,苹果系统会把APP所有进程停下来。

但有时候,APP不能完全停下来,例如APP需要持续获取用户定位,计算行走路线等,微信完全停下来,那画的路线就断了。

这个时候,如果APP还想继续运行这些功能,则需要开启一个后台进程。

然而,苹果为了系统稳定起见,不会允许这些后台进程一直运行,一定程度上会杀死这些后台进程,也就是“杀后台”。

于是就有了一个非常有趣的方案:

后台进程在检测到自己将要被苹果系统杀死的时,会打开一个新的进程。

所谓“唤醒”,实际上就是打开一个新的进程,继续进行上一个被杀死进程的功能。

而如果苹果系统频繁杀死后台进程,后台进程就会频繁打开新进程,于是就会出现网友看到的“频繁唤醒”的现象。

也就是说,“频繁唤醒”本来就是APP面对苹果系统“杀后台”特性的解决方案。

可能是苹果系统更新导致

实际上,“频繁唤醒”并非任何情况下都有效,进入后台的APP有时候还是会被“彻底杀死”,再次打开就会重新打开APP。

在旧版本的苹果系统中,其实一直有APP被“彻底杀死”的现象,只是没有13.2版本这么快。

苹果很可能增加了“杀后台”和“彻底杀后台”的概率

实际上,苹果更新到13.2版本后,包括微信的大部分app很可能都没有想到苹果系统会增加“彻底杀后台”的概率,所以仍然使用之前的“频繁唤醒”的解决方案,导致如今的问题。

从这个角度来看,很可能是苹果系统更新后,并没有告知开发者后台“频繁唤醒”方案已经不好用导致。

支付宝为什么没事?

实际上支付宝体系的APP,应该也存在类似问题,但是可能没有微信这么严重。

不过,从开发者的角度来看,支付宝的现象应该也说明,除了微信的“频繁唤醒”方案之外,可能还有其他解决方案,或者缓解方案。

另外资深技术人员认为,从技术角度来看,由于微信功能非常丰富,微信要单独解决这个问题,可能要排查所有后台功能,工作量应该很大,估计没这么快完成。

不过目前该问题应该还不是使用微信的致命问题,对用户的影响应该是有限的。

文章来源: https://twgreatdaily.com/zh-hans/Slk2PG4BMH2_cNUgf4SQ.html