2011-07-28 69 views
2

我們希望在調用到期處理程序後註銷我們的應用程序。這在某些時候是有效的,但是即使我們通過調用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; 
       } 
      }); 
     }]; 
    } 

回答

-1

iOS爲您提供了10分鐘的後臺任務。您的註銷過程需要很長時間嗎?

+0

我們實際上想要繼續向服務器發送數據達到最長時間。一旦這10分鐘結束,我們要退出。我再次測試這個來驗證,但我們報告應用程序崩潰的位置。我已經縮小到後臺任務。 – tjg184

相關問題