Приложение не приостанавливается после завершения длительной фоновой задачи

Почему мое приложение не приостанавливается сразу после завершения длительной фоновой задачи?

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

        [[UIApplication sharedApplication] endBackgroundTask:backgroundTask];
        backgroundTask = UIBackgroundTaskInvalid;

Однако вызов backgroundTimeRemaining возвращает 40-секундный интервал времени.

[[UIApplication sharedApplication] backgroundTimeRemaining]

Действительно, приложение не приостанавливается как минимум еще на 20 секунд после завершения задачи.

  • Почему это происходит?
  • Будет ли приложение всегда получать полное время выполнения?
  • Могу ли я ускорить приостановку работы приложения?

person Justin    schedule 01.11.2014    source источник


Ответы (1)


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

person Justin    schedule 03.11.2014