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"/>