Общие сведения о фоновой обработке в iOS
IOS регулирует фоновую обработку очень тесно и предлагает три подхода к реализации:
- Зарегистрируйте фоновую задачу . Если приложению необходимо выполнить важную задачу, она может попросить iOS не прерывать задачу при переходе приложения в фон. Например, приложению может потребоваться завершить вход в систему пользователя или завершить скачивание большого файла.
- Регистрация в качестве приложения, необходимого для фона. Приложение может зарегистрировать в качестве определенного типа приложения, которое имеет известные, конкретные требования к фону, такие как аудио, VoIP, внешний доступ, киоск новостей и расположение. Эти приложения разрешены для непрерывной фоновой обработки привилегий, если они выполняют задачи, находящиеся в параметрах зарегистрированного типа приложения.
- Включение фоновой Обновления. Приложения могут активировать фоновые обновления с помощью мониторинга регионов или прослушивать значительные изменения расположения. По состоянию на iOS 7 приложения также могут регистрироваться для обновления содержимого в фоновом режиме с помощью фонового получения или удаленных уведомлений.
Методы делегата приложений и состояний приложений
Прежде чем ознакомиться с кодом фоновой обработки в iOS, необходимо понять, как фоновый режим влияет на жизненный цикл приложения iOS.
Жизненный цикл приложения iOS — это коллекция состояний приложений и методов для перемещения между ними. Приложение переходит между состояниями на основе поведения пользователя и требований к фону приложения. Смещение показано на следующей схеме:
- Не запущено . Приложение еще не запущено на устройстве.
- Запущено или активно . Приложение находится на экране и выполняет код на переднем плане.
- Неактивное — приложение прерывается входящим телефонным звоноком, текстом или другим прерыванием.
- В фоновом режиме приложение перемещается в фоновом режиме и продолжает выполнять фоновый код.
- Приостановлено . Если у приложения нет кода, выполняемого в фоновом режиме, или если весь код завершен, приложение будет приостановлено операционной системой. Процесс приостановленного приложения сохраняется в живых, но приложение не может выполнить какой-либо код в этом состоянии.
- Возвращение к не запущенным и завершенным (редким ) — иногда процесс приложения уничтожается, а приложение возвращается в состояние "Не запущено ". Это происходит в ситуациях с низкой памятью или если пользователь вручную завершает работу приложения.
Так как внедрение поддержки с несколькими запросами iOS редко завершает работу приложений бездействия и вместо этого сохраняет свои процессы приостановленными в памяти. Сохранение процесса приложения гарантирует, что приложение запускается быстро при следующем открытии приложения. Это также означает, что приложения могут свободно перемещаться из приостановленного состояния обратно в фоновое состояние, не используя системные ресурсы. IOS 7 использует эту функцию с новыми API, которые позволяют приложениям приостановить фоновые задачи, когда устройство переходит в спящий режим, обновляет содержимое непосредственно из фонового режима без взаимодействия с пользователем и многое другое. Мы рассмотрим новые API в методах фонирования iOS.
Методы жизненного цикла приложения
При изменении состояния приложения iOS уведомляет приложение с помощью методов событий в AppDelegate
классе:
OnActivated
— Это вызывается при первом запуске приложения, и каждый раз, когда приложение возвращается на передний план. Это место для размещения кода, который должен выполняться каждый раз при открытии приложения.OnResignActivation
— Если пользователь получает прерывание, например текстовый или телефонный звонок, этот метод вызывается и приложение временно активируется. Если пользователь принимает телефонный звонок, приложение будет отправлено в фоновом режиме.DidEnterBackground
— Вызывается, когда приложение входит в фоновое состояние, этот метод дает приложению около пяти секунд, чтобы подготовиться к возможному завершению. Используйте это время для сохранения пользовательских данных и задач и удаления конфиденциальной информации на экране.WillEnterForeground
— Когда пользователь возвращается в фоновое или приостановленное приложение и запускает его на переднем плане,WillEnterForeground
вызывается. Это время для подготовки приложения к выполнению переднего плана путем повторного восстановления любого состояния, сохраненного во времяDidEnterBackground
.OnActivated
вызывается сразу после завершения этого метода.WillTerminate
— Приложение завершает работу и его процесс уничтожается. Этот метод вызывается только в том случае, если многозадачность недоступна на устройстве или версии ОС, если память низка, или если пользователь вручную завершает фоновое приложение. Обратите внимание, что приостановленные приложения, которые завершаются, не будут вызыватьсяWillTerminate
.
На следующей схеме показано, как подходят состояния приложения и методы жизненного цикла.
Пользовательские элементы управления для фона в iOS
IOS 7 представила несколько функций, чтобы предоставить пользователям больше контроля над фоновым состоянием приложения. Переключатель приложений и параметр фонового обновления приложений влияют на жизненный цикл приложения.
Переключатель приложений
Переключатель приложений — это важная функция управления, представленная в iOS 7. Она запускается с помощью двойного касания кнопки "Главная " и показывает приложения, процессы которых живы:
С помощью средства коммутатора приложений пользователи могут прокручивать моментальные снимки всех фоновых и приостановленных приложений. Касание приложения запускает его на переднем плане. Прокрутка удаляет приложение из фонового режима, завершив процесс. Мы рассмотрим переключатель приложений в демонстрации жизненного цикла приложений iOS в следующем разделе.
Внимание
Средство переключения приложений не показывает разницу между фоновыми и приостановленными приложениями.
Фоновое обновление приложения Параметры
IOS 7 повышает контроль над жизненным циклом приложений, позволяя пользователям отказаться от фоновой обработки приложений , зарегистрированных для фоновой обработки. Это не мешает приложениям выполнять фоновые задачи.
Пользователи могут изменить этот параметр, перейдя к Параметры общего > > фонового обновления приложения и изменив привилегии фона для выбранного приложения. Если фоновое обновление приложения отключено, приложение будет приостановлено немедленно при входе в фоновом режиме и не будет выполнять фоновую обработку:
Разработчики могут проверка состояние приложения фонового BackgroundRefreshStatus
обновления с помощью API. Например, ознакомьтесь с рецептом параметра проверки фонового обновления.
Мы рассмотрели основы жизненного цикла приложений iOS и функции для управления жизненным циклом приложений. Затем давайте рассмотрим жизненный цикл приложений iOS в действии.