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

Не вызывать didBecomeActive, если фоновая задача истекает

Вот ситуация:

Я выбираю большое видео с помощью imagepicker. Очевидно, что сборщик займет немного времени, чтобы сжать видео. Таким образом, чтобы облегчить работу с пользователем, я включил фоновую задачу для него.

Теперь возникает вопрос:

Если пользователь выбирает видео и нажимает кнопку "домой", приложение переходит в фоновый режим и продолжает сжимать видео в течение следующих 600 секунд. И фоновая задача истекает. В обработчике истечения срока действия я остановил фоновое задание.

Теперь, если пользователь возобновляет приложение после истечения срока действия фона

- (void)applicationDidBecomeActive:(UIApplication *)application

не вызывается. Может ли кто-нибудь объяснить мне, почему это происходит?

4b9b3361

Ответ 1

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

Вы должны обрабатывать вещи в своем обработчике истечения срока действия или/и когда ваша фоновая задача завершается успешно. В обеих ситуациях вам нужно установить background_task как недействительным.

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

Я предполагаю, что вы это знаете, но, возможно, вам не хватает свойств многозадачности в вашем файле Info.plist, поэтому ваше приложение не принимает фоновые задачи так, как вы ожидаете.

Ответ 2

- (void) applicationDidBecomeActive: (UIApplication) приложение

Этот метод Вызывается только при изменении состояния приложения из неактивного состояния в активное состояние.  Можно ли узнать, закончилась ли сборка видео? если возможно, просто сохраните его. и когда пользователь снова приходит в приложение. просто запустите необходимые функции.

Ответ 3

Не могли бы вы попытаться добавить оператор журнала к методу applicationDidFinishLaunching? Может быть, приложение завершается или сбой, прежде чем пользователь откроет его.

Кроме того, я считаю, что правильным способом является сохранение текущего контекста синтаксического анализа, когда приложение получает сигнал типа applicationDidFinishLaunching и когда приложение начинает возобновление разбора. Поскольку пользователь может закрыть приложение вручную.