Android java.net.UnknownHostException: хост не решен (вопрос стратегии) - PullRequest
8 голосов
/ 20 июля 2010

У меня есть код Android, который использует фоновый процесс для обычного (например, ежечасного) подключения к источнику контента в Интернете для проверки обновленного контента.По мере того, как новые пользователи загружают приложение и запускают его в первый раз, кажется (и на данный момент это просто «кажется»), что в этой ситуации первого запуска, поскольку DNS для наших серверов еще не кэшируется на устройстве,эти первые серии соединений терпят неудачу с ужасной UnknownHostException: хост не разрешен. И, конечно, приложение пытается снова позже, и (опять же, «похоже, что») все это работает - возможно, потому, что у ОС было время на самом деле разрешитьaddress.

Итак, мой вопрос (ы): (1) Видят ли другие разработчики Android такое поведение и со своими развернутыми приложениями? Впервые ряд «неразрешенных» проблем хоста, которые решаются позже.(2) Есть ли у кого-нибудь лучшая стратегия для «разогрева» DNS, так сказать, чтобы работали первые реальные соединения? Или, может быть, вы просто повторяете некоторую зацикливание, когда сталкиваетесь с этим исключением?Я думал о том, чтобы иметь отдельный поток, который пытается получить небольшой текстовый файл с нашего сервера ипросто зацикливайтесь до тех пор, пока не получите его, и, возможно, (не уверен насчет этой части) заблокируйте другие исходящие сетевые подключения, пока он не преуспеет.здесь вопросы о переполнении стека, и я просто хочу заверить всех, что

<uses-permission android:name="android.permission.INTERNET" />

установлено в моем файле манифеста:)

1 Ответ

15 голосов
/ 21 июля 2010

Я сталкивался с таким поведением при использовании HttpUrlConnection. Я использую простой обходной путь - я выполняю следующий код непосредственно перед использованием любого URL.

    try {
      InetAddress i = InetAddress.getByName(URLName);
    } catch (UnknownHostException e1) {
      e1.printStackTrace();
    }
// ... actually using URLName

Впервые я получаю здесь UnknownHostException, но следующие URL-адреса успешны (DNS-сервер возвращает правильный IP-адрес и я могу подключиться к серверу).

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