2014-05-23 41 views
3

我想知道哪個是正確的委託來暫停套接字連接以後恢復它,爲什麼。掛起applicationWillResignActive或applicationDidEnterBackground上的套接字連接?

從我讀過並在其他使用套接字的項目中看到的applicationWillResignActive似乎是正確的,但我也注意到它被稱爲太頻繁。 (即使顯示「iTunes的應用程式內」購買對話)

我不希望關閉連接時,它是不必要的。就我而言,在Active狀態下,應用程序仍然能夠處理套接字,所以如果我在應用程序進入背景時關閉連接,應該不會有問題,但我不希望應用程序只是轉到後臺而沒有確保連接被正確關閉,並丟失過程中的消息。

恢復連接時發生同樣的情況。截至目前,它在applicationDidBecomeActive代表,但也許更有意義applicationWillEnterForeground

是否有任何理由使用此代表?

謝謝!

回答

4

所以,看到沒有人回答,我覺得我應該補充的基礎上,進一步的測試所以這個問題是不是沒有回答什麼,我已經發現了一些響應。

基本上它更有意義,當應用程序變爲背景和簡歷/重新連接時,應用程序進入前景暫停/關閉連接。

這背後的原因是,當套接字連接仍然可以保持打開applicationWillResignActive會過於頻繁,甚至發生。當收到任何警報,通話或激活多任務處理,但應用程序仍然存在且完全可操作。

這也意味着,如果您使用應用程序內購買進行工作,當系統提示您輸入iTunes詳細信息時,連接將關閉,如果您還使用自己的後端管理這些購買,這可能會造成問題,以及需要連接活着。

從我所看到的,當應用程序進入後臺時套接字連接不能保持活了,應該是安全的只是關閉它,而不是applicationDidEnterBackground。

作爲一個側面說明,請記住,以確保連接正確關閉,因爲你只需要大約5秒鐘做任何你所需要的,特別是如果你正在聽套接字關閉事件做一些東西。

同樣,這是來自我的經驗。如果您有關於此事的更多信息請隨時通知我。

+1

謝謝你的分享知識! – bob