应用程序HANGS UP如果使用3G连接(WiFi可以)

时间:2010-05-30 16:05:47

标签: android

我的应用程序使用以下代码连接到网站并下载网页进行处理。

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连接,有时它无法连接或应用程序HANGS。

处理WiFi和3G之间有什么显着差异吗?

感谢。

1 个答案:

答案 0 :(得分:4)

  

代码仅在主线程中运行。

这不是一个好主意。请使用AsyncTask或其他内容从主线程中获取该逻辑。您也可以考虑使用HttpClient代替HttpUrlConnection,因为它也内置于Android中。

您可能还希望使用内置的浏览器应用程序测试您的URL。如果您得到类似的结果,那么您的无线运营商与您尝试访问的网站之间会发生一些事情。