Приостановка задач не будет работать, потому что сеанс больше не существует, если ваше приложение отбрасывается из-за нехватки памяти.
Самый простой подход - использовать задачу загрузки в фоновом сеансе, а затем прочитатьрезультирующий временный файл, когда он заканчивает загрузку.Задачи загрузки и выгрузки в фоновых сеансах - это единственные типы задач, которые могут выжить, если ваше приложение будет выброшено в фоновом режиме из-за нехватки памяти.
Если вы абсолютно должны избегать загрузки во время приложениянаходится в фоновом режиме (почему?), вы можете создать задачу загрузки на переднем или фоновом сеансе, а затем остановить задачи загрузки, вызвав cancelByProducingResumeData:
, когда ваше приложение станет фоновым.Позже вы можете продолжить запрос, позвонив по номеру downloadTaskWithResumeData:
.
. При таком подходе существует довольно большая оговорка, заключающаяся в том, что части данных возобновления API не так хорошо протестированы, как фоновая загрузка.части.Показательный пример: в каждой версии iOS 10 от первой бета-версии до 10.2 поддержка данных возобновления была полностью прервана.(Существует довольно ужасающий обходной путь , если вы решите пойти по этому пути.)
Поэтому я бы рекомендовал первый подход, если у вас нет каких-либо договорных или юридических обязательств не делать этого.