我們希望在調用到期處理程序後註銷我們的應用程序。這在某些時候是有效的,但是即使我們通過調用endBackgroundTask來結束後臺任務,但它似乎有時仍然很難完成這個過程。在這種情況下,我們的註銷過程幾乎看起來過於耗時,而iOS只是殺死它。這不應該是一項長期任務,但是有什麼辦法可以要求更多時間嗎?如何在iOS終止應用程序之前在過期處理程序中優雅地結束任務?
if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
// Synchronize the cleanup call on the main thread in case
// the task actually finishes at around the same time.
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid) {
backgroundKilled = true;
[self logoutAll];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
}];
}
這是一個非常好的圖。 – tjg184