android - UnknownHostException по истечении определенного времени, пока нет операций на телефоне Android

Я использовал "HttpClient" и "URLConnection", чтобы получить json данные с сервера, и он работает нормально при запуске приложения. Проблема в том, что, когда я оставляю свой телефон более чем на 20 минут без каких-либо операций, затем я запускаю приложение, оно выдает мне "UnknownHostException" в logcatи нет подтверждения ответа данных. На этот раз значок Wi-Fi на панели уведомлений показывает хорошее качество беспроводного соединения.

Поэтому я закрыл приложение и перезапустил его много раз, тогда все в порядке.

Я много гуглил, чтобы узнать, как решить эту проблему, но не получилось. Я действительно смущен по этому поводу. Я получил это - http://www.net.princeton.edu/android/android-stops-renewing-lease-keeps-using-IP-address-11236.html, я не уверен, что это вызвано этой ошибкой или нет,

Я перепробовал много способов из интернета - вроде "выключи и включи wifi по кодам" все не работает. Мне просто интересно, если это ошибка на определенном телефоне или системе Android, или что-то не так с моим кодом, любые советы приветствуются.

2012.12.10 Обновлено

Я пытался позвонить снова через 2 секунды, и в общей сложности 5 раз, чтобы дождаться, когда телефон выйдет из спящего режима, на моем телефоне работает нормально.

// all these codes are running on a worker thread (not main thread)
int timeout = 5;

if (json == null) {
  do {
     Thread.sleep (2000);
     // call it agina...
     if (json != null) {
        break;
     }
  } while (--timeout >= 0);

}

if (json == null) {
    // do something if it's not working at last
}

1 ответ

Лучший способ решить эту проблему - использовать WakeLock. Это заставляет ваше приложение оставаться на устройстве, чтобы вы не могли столкнуться с такими проблемами, используя этот файл манифеста Android:

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

Другие вопросы по тегам