Нужно разъяснение о UIApplicationState - PullRequest
16 голосов
/ 29 октября 2011

Мне нужна ваша помощь в разъяснении моего понимания различных состояний приложения. Я собираюсь изложить свою интерпретацию, но, пожалуйста, не стесняйтесь меня поправлять.

1) Приложение запускается и работает на переднем плане: state = UIApplicationStateActive
2) Пользователь нажимает домашнюю кнопку: state = UIApplicationStateBackground (????).

 Debug stmt in my app shows it to be Active

3) Пользователь дважды щелкает Домой и убивает приложение: state = UIApplicationStateInactive

Если значение для случая 2 действительно является активным, то когда устанавливается значение «Фон»?

Мое приложение на основе местоположения использует эти значения для принятия соответствующих действий для пользователя.

if ( ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) ||
    ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)      ) {
    // isInBackground = YES;
    //  ------ UI not available
}
else {
   // isInBackground = NO;
   //   ------ UI is available
}

С уважением, Сэм.

Ответы [ 3 ]

52 голосов
/ 01 марта 2012

Когда пользователь нажимает на значок приложения, приложение кратко проходит через переходное состояние UIApplicationStateInactive , чтобы стать UIApplicationStateActive .Именно здесь приложение готово к отображению для пользователя.

Когда приложение открыто, состояние приложения равно UIApplicationStateActive .

Если пользователь нажимает кнопку «Домой» и возвращается на трамплин (домашний экран), или приложение прерывается чем-то, например, телефонным звонком, состояние приложения переходит обратно на UIApplicationStateInactive .

Чтобы состояние приложения вашего приложения стало UIApplicationStateBackground , ваше приложение должно было бы зарегистрироваться для фонового процесса.Посмотрите, как справиться с вашими услугами определения местоположения.

3 голосов
/ 18 марта 2016

Документация Apple: Справочник констант UIApplicationState

  • Swift: .Active |Objective-C: UIApplicationStateActive

Приложение работает на переднем плане и в настоящий момент получает события.

Доступно в iOS 4.0и позже.

  • Swift: .Inactive |Objective-C: UIApplicationStateInactive

Приложение работает на переднем плане, но не получает события.Это может произойти в результате прерывания или из-за перехода приложения на фон или из него.

Доступно в iOS 4.0 и более поздних версиях.

  • Swift: .Background |Objective-C: UIApplicationStateBackground

Приложение работает в фоновом режиме.

Доступно в iOS 4.0 и более поздних версиях.

0 голосов
/ 12 октября 2016

Некоторые примеры:

UIApplicationStateActive - приложение работает на переднем плане. Простой.

UIApplicationStateInactive - Например. Приложение находилось в фоновом режиме и открывается через push-уведомление (переходящий atm). Или центр управления / уведомления представлен над вашим приложением. Вы вроде как видите, на переднем плане.

UIApplicationStateBackground - приложение находится в фоновом режиме, но все еще работает. Например, играет музыка. Затем - это может занять некоторое время или нет (в зависимости от процесса, который вы запускаете в фоновом режиме), но в какой-то момент ваше приложение будет убито. Вы увидите снимок и значок приложения между свернутыми приложениями, но сначала оно будет запущено снова.

...