2015-09-05 39 views
2

我正在開發一個類似的應用程序到電報或WhatsApp,我需要保持與服務器的持久套接字連接(我知道這是一個資源密集型工作,我相信GCM不會去以幫助在這種情況下,我目前無法改變架構)。在Android服務中的持久網絡連接

首先,我嘗試編寫一個服務,但由於服務運行在與應用程序的主線程相同的進程中,因此每當應用程序關閉時,服務就會重新啓動。 (我已經在onStartCommand()上返回START_STICKY)。

之後,我開始認爲我將不得不開發一個獨立的服務,並使用AIDL與我的應用進行交互。

我希望你能幫我解決這個問題。

+0

「每當應用程序關閉時,服務就會重新啓動」 - 應用程序在Android中不會「關閉」。 「封閉」是什麼意思? – CommonsWare

+0

以防用戶點擊菜單按鈕(主頁按鈕旁邊的那個按鈕)並滑動應用程序。當設備重新啓動時也是如此。我希望我的應用程序可以訪問建立了持久套接字連接的內存地址空間。 –

回答

1

用戶可以隨時殺死你的應用程序,如果他們想。如果您已將標記爲STICKY,則Android會爲您重新啓動它。在這種情況下,您需要識別您的應用程序已重新啓動並重新創建持久套接字連接。沒有什麼可以阻止用戶(或Android)在特定條件下殺死您的應用。

+0

謝謝@David,就是這樣。 –