2015-11-26 21 views
2

我正在爲我的應用程序播放背景音頻。但一些用戶警告我有一個奇怪的錯誤。在後臺播放1小時或更長時間後,該應用會被iOS殺死,您需要重新啓動它。iOS CPU_FATAL 0%在後臺

大多數情況下,它發生在糟糕的互聯網連接,當應用程序必須經常創建後臺任務,並使用它,直到下載足夠的數據以再次開始播放。

我知道後臺任務的時間限制,這不是問題。這裏是崩潰日誌從用戶設備部分:

enter image description here 最重要的線路:

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的後臺可以凍結對文件系統的訪問權限?

另外:

  • 當應用程序試圖設置鎖屏上的圖像它發生。
  • 圖像存儲在緩存文件夾中。

回答

0

從蘋果文檔:

你可以使用任何系統的音頻框架,帶背景音樂的內容工作,以及使用這些框架的過程中保持不變。 (通過AirPlay播放視頻,您可以使用媒體播放器或AV Foundation框架呈現您的視頻。)由於您的應用在播放媒體文件時未被暫停,因此當您的應用處於後臺時,回調功能正常運行。不過,在你的回調中,你應該只做必要的工作來提供回放數據。例如,流式音頻應用程序需要從其服務器下載音樂流數據並將當前音頻樣本推出用於回放。應用不應執行與播放無關的任何無關任務。

所以,如果你做下載圖像和保存等等的東西,你打破這個規則。

+0

感謝您的回答,但首先:圖像已經下載。第二:當我嘗試在鎖定屏幕上設置封面藝術時發生。 Apple提供了這個API,它肯定與背景回放有關(應用程序試圖設置當前播放軌道的封面)。 –