2012-06-07 77 views
0

我正在維護客戶端的iPhone應用程序。該應用程序不會在後臺運行(應用程序不會在設置plist中的background = YES中運行)。但是,當用戶暫時中斷(例如通過電話)或應用程序存在時,用戶需要註銷。我目前在applicationWillResignActive中執行此操作。我首先想到了使用beginBackgroundTaskWithExpirationHandler,但後來發現返回值總是「UIBackgroundTaskInvalid」。我認爲這是因爲我無法在後臺運行。那麼問題是,我應該如何處理註銷?我應該使註銷同步,並希望它按時完成(我猜在10秒內?)。UIBackgroundModes,註銷臨時(或永久)退出

起初我並不知道這個beginBackgroundTaskWithExpirationHandler沒有返回有效的後臺任務標識符,並且應用程序正在註銷。除了其中一個用戶保持具有「已經超出允許的時間積極斷言」崩潰(在iPad 1)。

任何人處理這個問題呢?

回答

0

如果您的應用程序沒有背景,那麼你就需要做你的註銷在所提供的-applicationWillTerminate:方法,這時候,那裏有一箇中斷或應用程序被關閉哪些將被稱爲

- (void)applicationWillTerminate:(UIApplication *)application { 
/* 
Called when the application is about to terminate. 
Save data if appropriate. 
*/ 

} 
+0

applicationWillTerminate:。不會被調用的中斷(如電話),甚至當應用程序不支持背景applicationWillResignActive:不過,被調用,而這正是whe現在我正在登錄用戶。它工作正常,除了iPad 1偶爾的崩潰,讓我擔心我在做什麼。基本的問題是,當你不運行後臺模式時,你如何確保用戶註銷?應用程序完成任務需要多長時間,並且此任務是否必須在UI線程上? –