Когда устройство переходит в спящий режим, какие версии ios вызывают applicationWillResignActive, а какие вызывают applicationDidEnterBackground? - PullRequest
1 голос
/ 29 декабря 2011

Я определил экспериментально, используя пару устройств, которые (насколько я могу судить), устройства iOS под управлением iOS 4, вызывают applicationWillResignActive, когда переходят в спящий режим (либо когда пользователь нажимает верхнюю правую кнопку, либо когда экран выключается из-задо бездействия, но приложение все еще работает), но устройства под управлением iOS 5 вызывают applicationDidEnterBackground, когда это происходит, и вызывают только applicationWillResignActive для чего-то вроде входящего текстового сообщения / телефонного звонка или пользователя, опускающего панель уведомлений (другими словами,очень временные события).

Устройство iOS, которое идет в спячку, однако, это не очень короткое событие (может быть очень длинным), и поэтому в этом случае я бы хотел отменить текущий вызов сервера,что я не должен делать (и не хочу делать) для очень коротких перерывов.

Мой вопрос: есть ли способ узнать, когда приложение зашло в сон, в отличие от любого другогоболее короткое прерывание (т.е. текстовое сообщение) и / или, альтернативно, кто-нибудь знаетага, если мое предположение о том, что устройства iOS 4 vs 5 вызывают, когда они засыпают, действительно верно?

Это то, что у меня есть сейчас, в applicationWillResignActive:

    if ([[[UIDevice currentDevice]systemVersion] hasPrefix:@"4"] ) { 
        //cancel server call
    }

Это работаетхорошо, насколько я могу судить, но каждый поток, который я прочитал о том, как определить версию iOS на устройстве, говорит, что вы не должны использовать этот код, если это возможно, и вместо этого должен вызвать правильный селектор для того, что вы пытаетесьделать.Но я понятия не имею, что это будет в этом случае.

1 Ответ

0 голосов
/ 29 декабря 2011

В этом посте: Общие сведения о фоновом режиме iOS 4 и обмене сообщениями делегатов , вы можете найти отличное объяснение того, когда отправляются сообщения делегатов.В частности, он объясняет, когда отправляются applicationWillResignActive и applicationDidEnterBackground в соответствии с различными версиями iOS.

Надеюсь, это вам поможет.

Приветствия

...