Прежде всего, я предлагаю вам считать этот документ предоставленным Apple . Документ понятен сам по себе, но я go изучу его, чтобы извлечь важную информацию, которая соответствует вашему вопросу.
В этом документе Apple прямо говорит, что каждая приостановленная задача пользовательского интерфейса будет отменена, а вы не должен отправлять новые задачи в очереди диспетчеризации, и вам следует приостановить текущие очереди и освободить ресурсы ASAP .
Когда приложение должно быть деактивировано, есть два шага:
- Система вызывает приложение
applicationWillResignActive(_:)
метод (или sceneWillResignActive(_:)
Если вы используете sceneDelegate
) - Затем UIKit вызывает
applicationDidEnterBackground(_:)
метод (или sceneDidEnterBackground(_:)
)
На первом этапе UIKit уведомляет вас о деактивации, что означает, что через несколько раз приложение войдет в в фоновом режиме. На этом этапе вы должны сохранить все конфиденциальные данные.
Если на этом шаге вы приостановили задачи пользовательского интерфейса, все они будут отменены.
Система также деактивирует приложения, когда ей необходимо временно их прервать, например, для отображения системных предупреждений.
На этом шаге вы должны приостановить выполнение текущей задачи, поскольку Apple говорит: «Вы должны сделать ваше приложение тихим
Сохраните данные пользователя на диск и закройте все открытые файлы.
Приостановить отправку и очереди операций.
Не планировать новые задачи для выполнения.
Аннулировать все активные таймеры.
Автоматическая приостановка игрового процесса.
...
На Вторых шагах, когда UIKit уведомляет ваше приложение о передаче tp фоновое состояние. Вы должны как можно быстрее освободить общие ресурсы. Если вы продолжите использовать ресурсы, ваше приложение будет прекращено.
Таким образом, упомянутая задача пользовательского интерфейса в вашем вопросе будет отброшена.
Я также рекомендую изучить этот документ о состояниях приложений, который помогает понять приложение состояние.