2012-11-21 38 views
-1

我想在調用applicationDidEnterBackground時取消URL連接。但我不知道如何在整個應用範圍內保存連接。我在其他視圖控制器中創建了幾個url連接,但我想在AppDelegate中取消它們。我怎樣才能做到這一點?- (void)applicationDidEnterBackground:(UIApplication *)application

+0

我敢肯定URL連接無論如何都會停止,當應用程序關閉,ARC應該採取其他的事情。 – woz

+0

應用程序applicationWillEnterForeground會自動重啓嗎?有什麼文件可以參考嗎? – anna

回答

0

我相信你的NSURLConnections會在你的應用進入後臺時被殺死。

如果你想跟蹤所有的NSURLConnections,你需要通過將它們添加到NSSet,NSArray或其他數據結構來跟蹤它們,並通過它們循環來關閉它們。你也可以有一個繼承或組成NSURLConnection的類。這個數據結構可以處理將其自身添加到隊列中,並且可以在應用程序退出時進行清理。

+0

有沒有任何證據表明NSURLConnections會在應用程序進入後臺時被殺死。我試圖找到一些文件來支持,但失敗了。 – anna

0

最好在應用程序變爲不活動狀態之前停止連接,而不是applicationDidEnterBackground

答案是使用通知:

-(void)init 
{ 
// 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeConnection) name:UIApplicationWillResignActiveNotification object:nil]; 
// 
} 
-(void)closeConnections 
{ 
// [urlConnection cancel]; 
} 
+0

當呼叫來臨時,應用程序的狀態將爲applicationWillResignActive,並且在拒絕呼叫時應用程序ID爲ActiveDireBecomeActive時將應用程序IDEnterBackground。我認爲最好是確認國家並停止聯繫。 – anna

3

你可以在你類創建連接添加觀察員UIApplicationDidEnterBackgroundNotification。試試這個:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

記得把這個

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil]; 

類的dealloc

相關問題