簡體   English   中英

iOS CPU_FATAL在后台0%

[英]iOS CPU_FATAL 0% in background

我正在為我的應用程序播放背景音頻。 但是有些用戶警告我一個奇怪的錯誤。 在后台運行1個小時或更長時間后,該應用已被iOS殺死,您需要再次啟動它。

通常情況下,這是由於互聯網連接不良而引起的,當時該應用程序必須經常創建后台任務並使用它,直到下載足夠的數據以再次開始播放為止。

我知道后台任務的時間限制,這不是問題。 這是來自用戶設備的崩潰日志的一部分:

在此處輸入圖片說明 最重要的幾行:

Exception Type: EXC_RESOURCE
Exception Subtype: CPU_FATAL
Exception Message: (Limit 80%) Observed 0% over 60 sec
Triggered by Thread: 0

最奇怪的是第三行。 如果0%低於80%的限制,為什么會例外?

通過象征線程0(它是主線程)的堆棧跟蹤,我發現它發生在方法- [NSFileManager fileExistsAtPath:] 以前,它發生在方法+ [UIImage imageWithContentsOfFile:] 那么,什么可以凍結對iOS后台文件系統的訪問?

也:

  • 當應用嘗試在鎖定屏幕上設置圖像時會發生這種情況。
  • 圖像存儲在緩存文件夾中。

從蘋果文檔:

您可以使用任何系統音頻框架來處理背景音頻內容,並且使用這些框架的過程沒有改變。 (對於通過AirPlay播放視頻,您可以使用Media Player或AV Foundation框架來演示視頻。)由於在播放媒體文件時應用未處於掛起狀態,因此回調在后台運行時正常運行。 但是,在回調中,您應僅執行提供數據以進行回放的必要工作。 例如,流音頻應用程序將需要從其服務器下載音樂流數據,並將當前的音頻樣本推出以進行回放。 應用程序不應執行與播放無關的任何無關緊要的任務。

因此,如果您執行諸如下載圖像和保存圖像之類的操作,則會違反此規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM