Что происходит, когда пользователь нажимает кнопку "Домой"?
У меня есть приложение, которое в настоящее время может общаться с сервером. Представьте себе следующий случай:
- Пользователь нажимает некоторые кнопки, которые вызывают запрос к серверу.
- Запрос отправляется на сервер и обрабатывается.
- Пользователь нажимает кнопку "Домой" (и, возможно, удаляет приложение из памяти, дважды нажав кнопку "Домой").
- Скрипт завершает обработку и возвращает ему результат.
Вопрос: получит ли устройство от пользователя этот ответ (я почти уверен, что не при удалении из памяти, а при закрытии приложения)?
2 ответа
В iOS есть 5 активных состояний:
Не работает: приложение не было запущено или работало, но было остановлено системой.
Неактивно: приложение работает на переднем плане, но не получает события. Приложение iOS может быть переведено в неактивное состояние, например, при получении вызова или SMS-сообщения.
Активно: приложение работает на переднем плане и получает события.
Фон: приложение работает в фоновом режиме и выполняет код.
- Приостановлено: приложение работает в фоновом режиме, но код не выполняется.
В третьем сценарии, когда пользователь нажимает кнопку "Домой", приложение будет отправлено в фоновое состояние #4 и по-прежнему сможет получать данные и запускать ваш сценарий. Если пользователь убивает приложение, (состояние #1) ваш сценарий не завершится.
Итак, чтобы ответить на ваш вопрос, да, ваше приложение продолжит выполнение кода, если пользователь переместит его в фоновое состояние, но не если он закроет приложение, потому что это переведет ваше приложение в состояние "Не работает".
- Приложение приостановлено (в фоновом режиме, не запущено) - в этом случае выполнение ваших запросов приостанавливается. Когда ваше приложение выходит на передний план, обычно запросы заканчиваются тайм-аутом.
- Приложение закрывается - в этом случае контекст вашего приложения теряется и после перезапуска нет запущенных запросов.
Это 2 случая, о которых вы должны беспокоиться. Для меня это хорошее решение отменить все запущенные запросы, когда приложение входит в фоновый режим, потому что легче перезапустить все, когда приложение снова выходит на передний план.
Кроме того, вы можете настроить фоновый режим, который позволяет приложению выполнять некоторый код в фоновом режиме, но это более сложная тема.