2012-02-01 222 views
2

是否有事件被觸發,或者有什麼方式告訴我的應用何時進入或退出暫停狀態?如何檢測App何時進入/掛起狀態?

編輯:我已閱讀所有與AppDelegate事件有關的文檔,並且我知道沒有任何方法可以從該類中檢測到移動到暫停狀態。

具體來說,如果我的應用程序在後臺播放音樂,並且音樂暫停(例如通過遙控器,音樂以及不久之後所有執行),則暫停。 當用戶通過遙控器(例如鎖定屏幕)再次按下播放時,音樂重新開始並繼續執行(應用程序從掛起狀態轉換到背景狀態)。 有沒有什麼辦法可以檢測到這個?我需要關閉一些服務,如斷開網絡套接字,停止卓悅服務等等

回答

2

我已經結束的應用程序的整個生命週期(因爲我的應用程序在後臺播放音頻)組合了AudioSession對象的Begin和End AudioInterruption事件,以及任務完成處理程序的回調,以決定我的應用程序即將被暫停。

例如(僞代碼):

if(BeginAudioInterruption && AppIsInBackground) 
    WillSuspend(); 
else if(AppWillResignActive && MusicPlaying == false) 
    WillSuspend(); 
else if(AppWillResignActive && TaskCompletion.TimeRemainingSeconds < 5 && MusicPlaying == false) 
    WillSuspend(); 
else // etc...