2013-06-22 80 views
0

在使用AVAudioPlayer播放聲音之後,我觀察到一個線程繼續運行並消耗大約3%的CPU。它似乎與HAL的東西(硬件抽象層)有關。 如何實現全面清理並讓我的應用程序閒置? 它在本地var中被引用,並在播放結束後正確釋放。 我注意到,如果我只是實例化AVAudioPlayer,但從來沒有調用播放方法,該線程不會被創建。該應用程序閒置。 任何想法?無法完全拆卸AVAudioPlayer

注意:我反對這個問題,因爲我意識到這個問題只在模擬器上。在這裏找到解釋http://lists.apple.com/archives/coreaudio-api/2006/Jul/msg00022.html

+0

是您的本地或全球玩家的實例嗎? – Roma

+0

本地實例。 –

+1

你試過'[[AVAudioSession sharedInstance] setActive:NO er​​ror:NULL]'?在使用來自不同AV框架的組件時幫助我很多... –

回答

1

如何使用3%cpu的對象的確切名稱?

您是否嘗試過在樂器中運行應用程序?

Instruments Usage Manual

特別是檢查是否有泄漏,並在那裏創建。

+0

其實它是一個C++函數HALRunLoop :: OwnThread(void *) –

+0

幫助的一點。謝謝 ! –

+1

那麼HALRunLoop是由一些客觀對象調度的,當這個對象被釋放時它應該不調度這個Runloop。 此外,您發佈的鏈接聲稱Halrunloop是ina混合環境,所以另一個應用程序可能同時使用它。所以,只要你不玩東西,或者它可能只是由一些玩家在後臺保存,你可能就不會看到它。 – Bersaelor

0

請嘗試下面的代碼並將您的音頻播放器對象設置爲零。

NSError *error; 
[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];