2010-05-30 61 views
0

我的應用程序使用以下代碼連接到網站並下載網頁進行處理。應用程序如果使用3G連接掛起(WiFi是好的)

HttpURLConnection c = (HttpURLConnection) url.openConnection(); 
c.setRequestMethod("GET"); 
c.setRequestProperty("User-Agent", "Mozilla/3.0 (compatible; MSIE 4.0; Windows NT)"); 
c.setRequestProperty("Accept-Language", "zh-hk"); 
c.setRequestProperty("Connection", "Keep-Alive"); 
c.setConnectTimeout(6000); // mTimeout is in seconds 

intTries = 3; 

do { 
    c.connect(); 
    if (c.getResponseCode() == 200) { 
     break; 
    } 
    else { 
     intTries --; 
    }  
} while (intTries > 0); 

這些代碼僅在主線程中運行。如果正在使用WiFi,那很好,很乾淨。如果正在使用3G連接,有時無法連接或應用程序掛起。

處理WiFi和3G有什麼不同嗎?

謝謝。

回答

4

代碼僅在主線程中運行。

這不是一個好主意。請使用AsyncTask或其他方法從主線程中獲取該邏輯。您也可以考慮使用HttpClient而不是HttpUrlConnection,因爲它也內置在Android中。

您可能還希望使用內置的瀏覽器應用程序測試您的URL。如果您獲得類似的結果,那麼您的無線運營商與您嘗試訪問的網站之間會發生一些事情。

相關問題