2014-11-02 70 views
0

我正在開發這個約會應用程序,允許用戶瀏覽從服務器下載的配置文件。如何從後臺服務獲取結果,但仍然保持運行在android

但我不知道我應該用什麼樣的線程或服務來上傳和從服務器上下載。

它必須是一個在後臺運行的服務,首先通過套接字連接到服務器,然後等待來自用戶輸入(來自UI線程)的命令。

我讀了Service和IntentService類。IntentService似乎是合適的,只不過它在完成作業並將結果返回給調用線程後被銷燬。我需要它繼續傾聽請求。

我每次都可以開始一個新的服務,但這意味着我必須重新連接服務器,每次請求(假設每次瀏覽配置文件時)。這看起來不正確。

任何人都可以告訴我爲此目的的最佳方法是什麼?

+0

嘗試維護持久的套接字連接在移動應用程序開發中具有挑戰性。你爲什麼要走這條路線,而不是使用Web服務,而使用像SPDY這樣的東西來保持套接字的連接? – CommonsWare 2014-11-02 22:40:31

+0

我不知道使用套接字在移動應用程序開發中被挫敗......我已經構建了這個客戶端 - 服務器通信代碼,並希望將其轉移到Android。我對網絡通信很陌生,所以我不知道有其他選擇。所以創建一個Web服務比套接字通信更好? – 2014-11-02 23:11:12

+0

「我不知道在移動應用程序開發中使用套接字是不鼓勵的 - 」套接字並不氣餒。由於這些設備是移動設備,因此難以在移動設備中維護持久的套接字連接。用戶四處走動,進入電梯,駕駛等。這使得移動設備在不同的WiFi接入點之間翻轉,故障切換到移動數據等。每當發生這種事情時,現有的套接字連接必須被重新建立。因此,所有其他條件相同的情況下,只有在需要此類連接時才使用長期連接。 – CommonsWare 2014-11-02 23:16:08

回答

0

如果您在詢問如何使客戶端在UI線程外發送下載/上傳請求,那麼您可以嘗試使用AsyncHttpClient。幾乎在我開發的每個應用程序中,我一直使用它,並且它非常可靠。

但是,如果你想從服務器發送數據到客戶端(換句話說,客戶端保持監聽任何傳入數據),我推薦你使用GCM。這裏是一步一步的教程implementing GCM in Android device