В моем приложении я получаю информацию о погоде из Интернета в asynctask, но иногда сервер немного отстает, и я хочу сделать до 10 запросов (если предыдущий был неуспешен) с 10 секундами ожидания между запросами. Но когда я заставляю свою асинтаску ждать 10 секунд (моделирование не отвечает на сервер), основной поток (пользовательский интерфейс) зависает до тех пор, пока asynctask не закончит работу (сделайте 10 раундов запросов).asynctask останавливает основную нить
вот код, где я сделать и выполнить AsyncTask
WeatherGetter wg = new WeatherGetter();
wg.execute(url);
try {
weather = wg.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
и это, где я сделать его ждать
if (cod != 200) {
synchronized (WeatherGetter.this) {
try {
WeatherGetter.this.wait(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Вы получаете блокировку на WeatherGetter перед ожиданием в течение 10 секунд? Вы должны уведомлять свою деятельность о том, что у вас есть данные в onPostExecute. – JustinDanielson
Не могли бы вы разместить весь код? Эта единственная часть не помогает нам – StErMi
В погоне за геттером вы делаете http-запрос? –