Что происходит, когда пользователь нажимает кнопку "Домой"?

У меня есть приложение, которое в настоящее время может общаться с сервером. Представьте себе следующий случай:

  1. Пользователь нажимает некоторые кнопки, которые вызывают запрос к серверу.
  2. Запрос отправляется на сервер и обрабатывается.
  3. Пользователь нажимает кнопку "Домой" (и, возможно, удаляет приложение из памяти, дважды нажав кнопку "Домой").
  4. Скрипт завершает обработку и возвращает ему результат.

Вопрос: получит ли устройство от пользователя этот ответ (я почти уверен, что не при удалении из памяти, а при закрытии приложения)?

2 ответа

Решение

В iOS есть 5 активных состояний:

  • Не работает: приложение не было запущено или работало, но было остановлено системой.

  • Неактивно: приложение работает на переднем плане, но не получает события. Приложение iOS может быть переведено в неактивное состояние, например, при получении вызова или SMS-сообщения.

  • Активно: приложение работает на переднем плане и получает события.

  • Фон: приложение работает в фоновом режиме и выполняет код.

  • Приостановлено: приложение работает в фоновом режиме, но код не выполняется.

В третьем сценарии, когда пользователь нажимает кнопку "Домой", приложение будет отправлено в фоновое состояние #4 и по-прежнему сможет получать данные и запускать ваш сценарий. Если пользователь убивает приложение, (состояние #1) ваш сценарий не завершится.

Итак, чтобы ответить на ваш вопрос, да, ваше приложение продолжит выполнение кода, если пользователь переместит его в фоновое состояние, но не если он закроет приложение, потому что это переведет ваше приложение в состояние "Не работает".

  1. Приложение приостановлено (в фоновом режиме, не запущено) - в этом случае выполнение ваших запросов приостанавливается. Когда ваше приложение выходит на передний план, обычно запросы заканчиваются тайм-аутом.
  2. Приложение закрывается - в этом случае контекст вашего приложения теряется и после перезапуска нет запущенных запросов.

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

Кроме того, вы можете настроить фоновый режим, который позволяет приложению выполнять некоторый код в фоновом режиме, но это более сложная тема.

Другие вопросы по тегам