Как определить, когда приложение переходит в / из приостановленного состояния? - PullRequest
2 голосов
/ 01 февраля 2012

Есть ли событие, которое вызывается, или каким-либо образом сообщать, когда мое приложение входит или выходит из приостановленного состояния?

РЕДАКТИРОВАТЬ: я прочитал все документы, связанные с событиями AppDelegate, ия знаю, что из этого класса нет никакого способа обнаружить переход в приостановленное состояние.

В частности, если мое приложение воспроизводит музыку в фоновом режиме, а музыка приостанавливается, например, черезПульт дистанционного управления, музыка, и вскоре после этого все исполнение приостанавливается.Когда пользователь снова нажимает кнопку воспроизведения с пульта дистанционного управления (или, например, на экране блокировки), музыка начинается снова и исполнение продолжается (приложение переходит из приостановленного состояния в фоновое состояние).Есть ли способ, которым я могу обнаружить это?Мне нужно закрыть некоторые службы, такие как отключить сетевые сокеты, остановить службы Bonjour и т.д. ...

Ответы [ 2 ]

5 голосов
/ 01 февраля 2012

Посмотрите на это изображение, оно показывает полный жизненный цикл приложения

http://www.cocoanetics.com/files/UIApplication_Delegate_post_4_v121.jpg

2 голосов
/ 04 марта 2012

Я закончил тем, что использовал комбинацию приложения, которое ушло в отставку / стало активным и (поскольку мое приложение воспроизводит аудио в фоновом режиме), события Begin и End AudioInterruption объекта AudioSession, а также обратный вызов обработчика завершения задачи для решить, должно ли мое приложение быть приостановлено.

Например (псевдокод):

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