我注意到在我的應用程序,當應用程序進入後臺時加載導致錯誤,如「超時」或「主機名稱未找到」。NSURLConnection最佳做法當進入背景
這是由於不允許連接長時間在後臺運行的過程。
但是那種錯誤信息會導致用戶體驗不好。那麼我應該怎麼做才能取消交易?我應該取消所有連接嗎?我試圖在SO中搜索Q & A,但找不到答案。
有關更多信息,我的應用程序使用NSURLConnectionDelegate方法。我有一個商店單身人士管理與我的服務器的所有連接。 NSURLConnection也是在自定義對象中調用和管理的。
我試着在applicationDidEnterBackground中只是[連接取消]:但是這會導致UI被破壞,因爲我加載數據到UITableViewCell等。任何人都可以指出這個例子來解決這類問題嗎?
更新的代碼:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
__block UIBackgroundTaskIdentifier backgroundTask; backgroundTask =
[application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:backgroundTask];
backgroundTask = UIBackgroundTaskInvalid; }]; }
}
可我只是把這個代碼中的appDelegate?這樣做的缺點是將beginBackgroundTaskWithExpirationHandler放在我希望在任務完成後繼續在後臺和endBackgroundTask中運行的任務之前?我的代碼有一個直接處理NSURLConnection的對象。
難道你的意思'[連接取消]'? – Peres
是的,這是正確的。[連接取消]不會停止。 –