我有一個調度隊列,它有一些工作。我希望隊列繼續運行,直到任何時間耗盡或隊列被排空,當應用程序進入後臺。我將如何設置UIBackgroundTaskIdentifier?GCD和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;
}
});
我想在上面發生的事情是它沒有註冊爲一個長期運行的任務,直到隊列實際運行塊。那麼我是否需要將代碼的背景部分放在代碼塊之外,以便在實際排隊之前執行?