私のアプリでは、asynctask でインターネットから天気情報を取得しますが、サーバーが少し遅れる場合があり、リクエスト間で 10 秒待機して最大 10 個のリクエストを作成したいと考えています (以前のリクエストが失敗した場合)。しかし、asynctask を 10 秒間待機させると (モデリングがサーバーに応答しない)、メイン スレッド (ユーザー インターフェイス) は、asynctask がジョブを終了するまでフリーズします (10 ラウンドの要求を行います)。
これは、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();
}
}
}