2014-01-06 120 views
1

我會跟下面的感謝您的幫助:Android的3G連接延遲

問:
我期待急於3G連接,使之立即連接。

說明: 我建立一個應用程序(Android版),使用HttpClient的連接到我的服務器,和亞馬遜的AWS API連接到各種亞馬遜服務。

我注意到有時候,3g中的連接建立需要很多時間,而實際上Android似乎在發送GET/POST /任何請求之前等待了一段時間,甚至沒有嘗試。

很少澄清:

  • 3G的連接是否正常(良好的信號),問題是僅使用3G。
  • 嘗試連接到使用瀏覽器(如船瀏覽器)上網的時候
  • ,連接似乎「喚醒」,並在狀態欄上的綠色&橙色箭頭再次開始照明。和...瀏覽器的作品。有時我的請求也會被「喚醒」。
  • 我的請求可以工作,但通常需要一段時間(至少1分鐘),直到他們真正開始。

如果需要,我可以放一些代碼,但它看起來與我的操作無關,它只是Android的工作原理(也許它在啓動3g連接之前等待很多請求?),應用程序(如小船瀏覽器)強制連接發送他們的請求,或者只是刷新3g連接。

謝謝你這麼多

+0

好吧,我發現一件事(可能會很明顯)。 如果有另一個嘗試使用連接的AsyncTask(不知道任何其他線程)正在運行,所有其他連接任務將不會啓動。 這就是爲什麼它在WIFI上「工作」。響應(或在我的情況「無響應」/超時)來得快得多。 當前的修復是對連接(httpClient)進行超時。 –

回答

0

好吧,我發現足夠的信息來清除此了!

AsyncTasks作爲連接線程最好的辦法是避免它們顯然 並使用Google Volley代替。

請看看這個鏈接,瞭解有關AsyncTasks的細微差別: http://www.jayway.com/2012/11/28/is-androids-asynctask-executing-tasks-serially-or-concurrently/
(我發現在一個單獨的問題,這個鏈接,但我不能找到它,抱歉)。

而且看這個鏈接來了解什麼是谷歌凌空它來實現它一個多線程的連接如何更容易:
https://developers.google.com/events/io/sessions/325304728

So..To 答案問題:
1。在某些/大多數情況下,您的AsyncTasks不會同時運行。
2.爲了「強制」多線程連接,請使用Volley(可以配置爲順序運行btw)或讀取上面有關AsyncTask的鏈接以「啓用」它。