У меня есть очередь отправки, в которой есть какая-то работа.Я хочу, чтобы очередь продолжала работать до тех пор, пока не истечет время или не истечет очередь, когда приложение перейдет в фоновый режим.Как бы я настроил UIBackgroundTaskIdentifier?
Нужно ли мне поместить его в блок отправки следующим образом?
dispatch_async(queue, ^{
if (_bgTask == UIBackgroundTaskInvalid) {
if ([UIDevice currentDevice].multitaskingSupported) {
_bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(void) {
if (_bgTask != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:_bgTask];
_bgTask = UIBackgroundTaskInvalid;
}
}];
}
}
...
...
if (_bgTask != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:_bgTask];
_bgTask = UIBackgroundTaskInvalid;
}
});
Я думаю, что происходит в приведенном выше, это не зарегистрировандолгое задание до тех пор, пока очередь фактически не выполнит блок.Так нужно ли размещать фоновую часть кода за пределами блока, чтобы он выполнялся до того, как фактически встал в очередь?