2011-08-12 29 views
4

我的音頻流應用程序遇到了非常奇怪的CPU使用問題。當後臺應用程序出現奇怪的CPU使用問題

當應用程序處於前臺並播放音樂時,總設備CPU使用率僅爲15%左右。但是,一旦將應用程序置於後臺,CPU使用率將達到100%並保持在該位置。

其中大約40%來自應用程序本身,大約另外60%來自SpringBoard進程,顯然它處理所有核心動畫調用(雖然我沒有明確使用Core Animation,但我假設它還處理其他與用戶界面相關的活動)。此外,根據「CPU活動」工具,應用程序進程自身的額外CPU使用率大部分屬於「圖形」類別,儘管我確實看到「音頻處理」和(奇怪)「前景增加應用程序活動「類別。

如何找出導致此問題的原因?儀器告訴我在高層什麼正在發生,但不是爲什麼這是發生。

回答

1

這很奇怪。然而,沒有任何代碼,它就很難說任何事情。純粹基於猜測,我會說你正在更新UI而不知道它在後臺。也許動畫電話-(void)applicationDidEnterBackground?給我們更多的工作!我真的很好奇這個:)

0

神祕解決了!

當然,我錯過了明顯的,謝謝迪倫G指着我在正確的方向。我正在運行一個循環來檢查剩餘的背景時間。我根本不會睡覺循環線程,所以它顯然只是全速運行所有的CPU功耗。

我不確定它爲什麼看起來像是圖形相關的並涉及SpringBoard進程,但只要我在循環結束時添加了sleep(1),當應用程序放置時CPU使用率不再上升在背景中。奇怪的是,我沒有在該循環中調用任何UI或圖形相關的方法,只需調用[[UIApplication sharedApplication] backgroundTimeRemaining]並訪問一些整數和布爾屬性。

將CPU放置在後臺後,第二個CPU仍然有一個很快的高峯,而且SpringBoard也出現了尖峯,但僅僅持續一秒鐘,CPU使用率就回落到與應用程序運行時相同。

+0

我很高興你想通了!我知道它必須是簡單的;) –

相關問題