更新了,討論結束。

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 使用技巧?

手機超實用技巧匯總,你想問的都在這!


推薦閱讀:
相關文章