Общие сведения о фоновой обработке в iOS

IOS регулирует фоновую обработку очень тесно и предлагает три подхода к реализации:

  • Зарегистрируйте фоновую задачу . Если приложению необходимо выполнить важную задачу, она может попросить iOS не прерывать задачу при переходе приложения в фон. Например, приложению может потребоваться завершить вход в систему пользователя или завершить скачивание большого файла.
  • Регистрация в качестве приложения, необходимого для фона. Приложение может зарегистрировать в качестве определенного типа приложения, которое имеет известные, конкретные требования к фону, такие как аудио, VoIP, внешний доступ, киоск новостей и расположение. Эти приложения разрешены для непрерывной фоновой обработки привилегий, если они выполняют задачи, находящиеся в параметрах зарегистрированного типа приложения.
  • Включение фоновой Обновления. Приложения могут активировать фоновые обновления с помощью мониторинга регионов или прослушивать значительные изменения расположения. По состоянию на iOS 7 приложения также могут регистрироваться для обновления содержимого в фоновом режиме с помощью фонового получения или удаленных уведомлений.

Методы делегата приложений и состояний приложений

Прежде чем ознакомиться с кодом фоновой обработки в iOS, необходимо понять, как фоновый режим влияет на жизненный цикл приложения iOS.

Жизненный цикл приложения iOS — это коллекция состояний приложений и методов для перемещения между ними. Приложение переходит между состояниями на основе поведения пользователя и требований к фону приложения. Смещение показано на следующей схеме:

Application States and Application Delegate Methods diagram

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

Так как внедрение поддержки с несколькими запросами iOS редко завершает работу приложений бездействия и вместо этого сохраняет свои процессы приостановленными в памяти. Сохранение процесса приложения гарантирует, что приложение запускается быстро при следующем открытии приложения. Это также означает, что приложения могут свободно перемещаться из приостановленного состояния обратно в фоновое состояние, не используя системные ресурсы. IOS 7 использует эту функцию с новыми API, которые позволяют приложениям приостановить фоновые задачи, когда устройство переходит в спящий режим, обновляет содержимое непосредственно из фонового режима без взаимодействия с пользователем и многое другое. Мы рассмотрим новые API в методах фонирования iOS.

Методы жизненного цикла приложения

При изменении состояния приложения iOS уведомляет приложение с помощью методов событий в AppDelegate классе:

  • OnActivated — Это вызывается при первом запуске приложения, и каждый раз, когда приложение возвращается на передний план. Это место для размещения кода, который должен выполняться каждый раз при открытии приложения.
  • OnResignActivation — Если пользователь получает прерывание, например текстовый или телефонный звонок, этот метод вызывается и приложение временно активируется. Если пользователь принимает телефонный звонок, приложение будет отправлено в фоновом режиме.
  • DidEnterBackground — Вызывается, когда приложение входит в фоновое состояние, этот метод дает приложению около пяти секунд, чтобы подготовиться к возможному завершению. Используйте это время для сохранения пользовательских данных и задач и удаления конфиденциальной информации на экране.
  • WillEnterForeground — Когда пользователь возвращается в фоновое или приостановленное приложение и запускает его на переднем плане, WillEnterForeground вызывается. Это время для подготовки приложения к выполнению переднего плана путем повторного восстановления любого состояния, сохраненного во время DidEnterBackground . OnActivated вызывается сразу после завершения этого метода.
  • WillTerminate — Приложение завершает работу и его процесс уничтожается. Этот метод вызывается только в том случае, если многозадачность недоступна на устройстве или версии ОС, если память низка, или если пользователь вручную завершает фоновое приложение. Обратите внимание, что приостановленные приложения, которые завершаются, не будут вызываться WillTerminate .

На следующей схеме показано, как подходят состояния приложения и методы жизненного цикла.

This diagram illustrates how the application states and lifecycle methods fit together

Пользовательские элементы управления для фона в iOS

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

Переключатель приложений

Переключатель приложений — это важная функция управления, представленная в iOS 7. Она запускается с помощью двойного касания кнопки "Главная " и показывает приложения, процессы которых живы:

Moving between apps using the App Switcher

С помощью средства коммутатора приложений пользователи могут прокручивать моментальные снимки всех фоновых и приостановленных приложений. Касание приложения запускает его на переднем плане. Прокрутка удаляет приложение из фонового режима, завершив процесс. Мы рассмотрим переключатель приложений в демонстрации жизненного цикла приложений iOS в следующем разделе.

Внимание

Средство переключения приложений не показывает разницу между фоновыми и приостановленными приложениями.

Фоновое обновление приложения Параметры

IOS 7 повышает контроль над жизненным циклом приложений, позволяя пользователям отказаться от фоновой обработки приложений , зарегистрированных для фоновой обработки. Это не мешает приложениям выполнять фоновые задачи.

Пользователи могут изменить этот параметр, перейдя к Параметры общего >> фонового обновления приложения и изменив привилегии фона для выбранного приложения. Если фоновое обновление приложения отключено, приложение будет приостановлено немедленно при входе в фоновом режиме и не будет выполнять фоновую обработку:

Background App Refresh Settings

Разработчики могут проверка состояние приложения фонового BackgroundRefreshStatus обновления с помощью API. Например, ознакомьтесь с рецептом параметра проверки фонового обновления.

Мы рассмотрели основы жизненного цикла приложений iOS и функции для управления жизненным циклом приложений. Затем давайте рассмотрим жизненный цикл приложений iOS в действии.