Приложение зависает, если используется соединение 3G (WiFi в порядке) - PullRequest
0 голосов
/ 30 мая 2010

Мое приложение использует следующие коды для подключения к веб-сайту и загрузки веб-страницы для обработки.

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?

Спасибо.

1 Ответ

4 голосов
/ 30 мая 2010

Коды запускаются только в основном потоке.

Это не очень хорошая идея. Пожалуйста, используйте AsyncTask или что-то еще, чтобы убрать эту логику из основного потока. Вы также можете рассмотреть возможность использования HttpClient вместо HttpUrlConnection, поскольку он также встроен в Android.

Возможно, вы также захотите проверить свой URL-адрес с помощью встроенного в браузер приложения. Если вы получаете схожие результаты, то между вашим оператором беспроводной связи и сайтом, к которому вы пытаетесь перейти, что-то происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...