更新了,讨论结束。

iOS 13.2.2 包括针对 iPhone 的错误修复和改进。本更新:

  • 修复了可能导致后台运行的 App 意外退出的问题
  • 解决了 iPhone 在通话结束后可能暂时无蜂窝网路服务的问题
  • 解决了蜂窝数据可能暂时不可用的问题
  • 修复了导致 Exchange 帐户间 S/MIME 加密电子邮件的回复无法阅读的问题
  • 解决了在 Safari 浏览器中使用 Kerberos 单点登录服务时可能提示认证的问题
  • 解决了采用闪电介面供电的 YubiKey 配件可能出现充电中断的问题

如需了解 Apple 软体更新的安全性内容,请访问此网站:

https://support.apple.com/kb/HT201222


这个问题也困扰了我一阵子,我尝试进行一下分解,欢迎有更多细节的朋友在评论区交流。


升级到 iOS13 遇到频繁崩溃的情况,可以到

系统设置 -&> 隐私 -&> 分析与改进 -&> 分析数据

中查看到所有的本机日志,其中有一些系统的周期性报告日志,有一些系统警告日志,还有一些是崩溃日志。

看到名如

[app可执行文件名称].wakeups_resource-YYYY-mm-dd...

的文件,这些是目前最可疑的文件。

这里以微信举例(毕竟是国民应用,大家普遍都用)

微信相关的日志

这是在iOS中看到的样子。点开一条看看。

有一个关键信息

wakeups 超过系统限制范围

Event: wakeups
Action taken: none
Wakeups: 45001 wakeups over the last 271 seconds (166 wakeups per second average), exceeding limit of 150 wakeups per second over 300 seconds
Wakeups limit: 45000
Limit duration: 300s
Wakeups caused: 45001
Wakeups duration: 271s
Duration: 270.98s
Duration Sampled: 12.08s
Steps: 3

Hardware model: iPhone10,3
Active cpus: 6

看上去很吓人,之前看到网上有人这样评论 「微信一秒尝试唤醒160次+」,一波嘲讽给了微信。我看到这个日志的时候,也陷入了疑惑,莫非是微信平日「作妖」的时候 iOS 没管,iOS升级后,限制微信「作妖」了么?

又看了一下日志里那些本地常用的一些App(我常用的App都是国内的杀时间应用,这里就不枚举引战了),其实都存在类似的情况,在后台切换一下,就已经被杀了,iOS 13.2的体验直接回到了上古iOS时期。

这个Wakeups究竟是这个啥呢?

查了一些资料,易得:

Apple官方对于崩溃日志的解释
https://developer.apple.com/library/archive/technotes/tn2151/_index.html?

developer.apple.com

这里面解释了几个事情。

  1. Wakeups指的是线程间的切换的事件,并不是唤起应用的事件。
  2. 这个事件的产生是因为短期内切换线程频次过高,就会触发这件日志发生。
  3. 一般来说如何产生类似的事件?大量的非同步操作,可能会导致这类问题。
  4. 产生这个日志也不都会杀掉应用,如果包含 NON-FATAL CONDITION,即使触发了上限,产生了日志,也不会杀掉应用。

继续调研日志,可以发现在XCode中,把升到iOS 13.2以后的这几条Wakeups日志,都列为了Crash类别。

可以与上面的图片中的条目进行核对,如果有兴趣的话

按照微信实际被杀的频次,截图中列出来的部分,应该只是实际崩溃的一部分日志,另外一部分日志并没有在系统中列出来,所以不好说系统杀害微信的全部动机是否都是wakeups超限。

在Mac系统中,刚好还有一部分关于微信的连续的日志,是iOS 12.2上的微信崩溃日志(覆盖6天使用时间)。扫了一遍崩溃原因:

  • wakeups 超限 5条
  • EXC_CRASH 3条
  • EXC_BAD_ACCESS 1条
  • cup usage 超限 2条

XCode中微信相关的日志

然而最近的崩溃只有 1 条不是由于Wakeups超限引发的,其他均是类似的原因。


上面都是素材,以下是我的猜测。

根据这些非常有限的数据,也明显可以看到的是由于Wakeups的超限导致的崩溃比例是提高的了,大概是iOS 13.2 对于第三方应用的资源使用的监管,又进一步的收拢了一些,处理方案也更粗暴了一些。

这个没有打招呼的规则收拢,如果不是Apple的bug,而是有意为之的话,那就有点难为开发者了。

目前Apple应该是没有针对Wakeups次数的统计工具的。继续检索网路上关于Wakeups 的相关信息,可以找到这样一个讨论,如何量化自己thread wakeups 次数,变成了暂时无解的状态。

iOS - How to measure thread wakeups??

stackoverflow.com图标

在Apple给出官方建议或者通过更新默默恢复规则之前,感觉大家能做的事情也是按照各自的经验来尝试优化,有经验的朋友可以多分享分享


7p佛了,升级之后,切换什么软体都卡的一批,还有信号真的差的不行,没升级之前信号都还行,现在玩游戏动不动跳网,微信都刷不出来有时候。


其实我是倾向于认为这事情是苹果的问题,至少有一部分责任。

这个观点的论据很简单:并不是只有国内才发生这种强杀后台的情况,国外用户也发现这个问题广泛存在,并且引起媒体注意了。

没有仔细调查过这个背后的技术原因,不过总有如下几个方向:

1: 系统后台调度器本身有bug,大量异常调度app后台运行,进而自己把分给第三方app后台的唤醒额度用完了,触发异常,系统保护性杀后台。

2: 系统没有bug,但是某个API行为发生了变化,大量app使用这个API,但没有针对新行为优化,最终导致额外后台运行或者异常。

3: app开发人员自己不知道,但是他们都用了一些第三方的中间件,中间件没有针对新系统改进。这是除了苹果以外,唯一有可能导致大范围发生问题的原因。

盲押今晚苹果出补丁,押中了算我牛逼,不中你们也拿我没什么办法(逃


事实上IOS杀后台的问题不是13.2才有的,系统体验不够好的问题该处理处理,我希望Apple能尽快优化。我记得IOS11的时候杀后台很少,从iOS12开始杀后台就成为我能感受到的一部分了。

但是, 不代表我不喷微信这个流氓……微信杀后台的问题是老毛病了,而且由于同属于腾讯,我最大的体会就是为什么QQ基本不杀微信老是杀?

不同APP体验不同我还能举一堆例子,看NBA的都知道腾讯体育iPad版本杀后台特别严重,但是同样是直播APP为什么斗鱼虎牙就啥事?同样是漫画APP,动漫之家切出去一分钟必然杀后台,为什么腾讯动漫和哔哩哔哩漫画放个半天也没事?算了,还是说回微信吧。

要不是必要的时候一定要用微信我早就不用这个坑爹货了。

微信昨天做了个回应我不知道你们可看了,是这么写的——

「近日,我们收到少量用户反馈,用户在升级 iOS 13.2 版本后,App (如微信)回到手机桌面或锁屏后可能会被系统关闭,下次打开需要重新启动。目前,通过紧急联调,该问题已基本修复。如个别用户在使用上仍有问题,可联系我们解决。」

来,已知,1. 微信上一次更新APP是一个月前。

2. IOS13.2系统目前没有版本更新。那么微信是怎么解决掉杀后台的问题的呢?

估计就是微信做了个热更新改了些东西。

我前几天微博和知乎看到有些kol试图对立矛盾,说整件事是iPhone用户完全甩锅国产APP?(而且我不知道强调一下国产的意思是什么,国外APP也有类似的问题)

系统不动微信动一下就好了为什么不是微信的问题?

所以整件事情是这样的——

IOS这个版本肯定有自己的问题,国内反馈连系统APP都有些掉的非常快。我的建议就是没升级的暂时别升级了,看下个版本什么反馈。

但是部分APP(和国内国外就没关系)也有问题,这个问题两边都得解决,苹果你把自己的东西处理了,我希望某些流氓APP也能把自己的问题给处理好。

比如能不能把某些APP「假装被杀后台了」,「事实上自己把启动广告再放一遍最后回到同一个浏览位置」这个bug给解决了……

还有,说的就是你知乎,我用那么多APP,就你iOS13开始老是闪退,连一些特别小众的APP都不闪退,到你这里写个答案到一半都能给我退掉,都快几个月了,能处理好吗?


做一些评论区的反馈:

对我答案如果没看懂的朋友,麻烦再看一遍——我从来就没有否认这个版本的iOS体验不太好,需要改进,但是做人做事真的要就事论事,iOS的问题存在是事实,某些APP自己有问题也是事实,而且这些APP的流氓行为和iOS13.2事实上没有关系。

而且关于内存的大小问题,我直白告诉你动漫之家,在iPad Pro 2018 6GB上面照样一分钟就杀掉。我当然希望苹果加内存,但是杀后台的问题也别丢给内存。

如果你真的是iPhone用户,你会知道微信杀后台已经很久很久了,他就是比其他APP容易掉,而流氓APP一定要看广告这事儿也很久了,根本限制不住。

而且我寻思我也有mate,我真没觉得安卓没这个问题,只不过这是关于苹果问题,我没必要提安卓。

如果这次真的能把部分APP优化不好的问题一并解决,我觉得开头是糟糕的,结果就还算能接受吧。


iOS13更新的内容不少,但bug就更多了,诸如网路不稳定、掉电快、听筒声音小、部分应用闪退、热点分享有问题、杀后台严重等,特别是杀后台是最明显感受到的。

什么叫杀后台?

就是系统把某个APP的进程关掉,或者说从内存里释放掉,以腾出空间给别的 APP。比如说,原来在微信里聊得正 high,知乎突然发来一条信息,跑去知乎瞧了瞧,转身再切回微信时,发现微信被干掉,需要重新启动。这种情况,就是因为,微信APP占用的内存,被系统杀掉了。目前杀后台令人最糟心的是,玩著游戏切出去回微信消息,再切回游戏要重新打开...团战都打完了...

杀后台是普遍现象?

从大家发布的消息来看,这种现象相当普遍了,涉及新老iPhone,所以就不存在硬体问题,而应该是软体问题了。

杀后台与iOS的运行机制有关,我们都知道iPhone的运存要比安卓手机小很多,那是因为它使用的是「伪后台」——除了极少数可以后台运行之外(比如音乐播放),绝大多数在后台都是挂起的。 在多任务处理的时候,系统会自动中止在后台运行的程序,内存不够的时候,也会将后台运行的程序从内存中移除。

其实我们发现并非所有APP后台都会被杀,苹果自带的APP就还好,所以除了系统本身的Bug以外,还有第三方APP尚未很好适配的原因,毕竟这才刚发布没几天,而iOS13较iOS12的改动又比较大,目前只能修修补补。建议大家可以等到iOS13后面几个版本再更新,系统更稳定,bug也会减少。更新有风险,升级需谨慎!

如何减少后台被杀频率?

1.保证电量充足、避免设备过热并关闭低电量模式。电量不足、发热严重或者在低电量模式下,CPU 会被主动降频,后台被杀频率会明显增加。

2..将软体更新到最新版本,可以与iOS13.2适应匹配。

3.依次打开「设置」-「通用」-「后台应用刷新」,并启用该功能。

4.通过爱思助手降级,目前还可以降到iOS13.1.2。

相关阅读:

2019 年 9 月 20 日发布的 iOS 13 正式版的体验如何,是否值得升级?

有什么让你相见恨晚的 iPhone 使用技巧?

手机超实用技巧汇总,你想问的都在这!


推荐阅读:
相关文章