Подтвердить что ты не робот

Что происходит с задачами в диспетчерских очередях, когда приложение переходит в неактивное/фоновое/приостановленное состояние в iOS?

Я просматривал документацию Apple по состояниям приложений и Grand Central Dispatch, но я не нашел хорошего ответа на этот вопрос.

Согласно документации Apple, на iOS 4.0:

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

Итак, если система не очищает приостановленное приложение (приостановлено → не работает переход), что происходит с задачами, которые в настоящее время выполняются в очереди отправки? Фраза "Сухое лиофилизированное" оставляет желать лучшего - точно , что лиофилизируется?

Моя интерпретация - это то, какие очереди GCD, которые приложение использует во время приостановки, должны быть восстановлены, когда приложение переходит в активное состояние; при этой интерпретации задачи, существовавшие в очередях ОСП с предварительной приостановкой, исчезнут. Является ли моя интерпретация правильной?

4b9b3361

Ответ 1

Когда приложение приостановлено, весь процесс заморожен. Вы можете рассчитывать на возобновление процесса, как будто ничего не произошло сразу после его возобновления. Ваши логические очереди GCD-приложений не исчезают, они остаются такими, какие были в памяти. И потоки GCD, созданные в вашем процессе для обслуживания ваших очередей, возобновляются на месте, как будто ничего не произошло.

Таким образом, ваша интерпретация неверна: задачи, возникающие в предварительных приостановках GCD, не исчезают при возобновлении. Они никогда не уходили; они были только приостановлены.