CountDownTimer
私はこのようなものを作成しました
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
//timeout
}
@Override
public void onTick(long millisUntilFinished) {
PaymentAsyncTask paymentTask = new PaymentAsyncTask(this);
paymentTask.execute();
}
}
onPostExecute
of で、paymentTask
特定の条件でいくつかの操作を行っています。
基本的に、私はいくつかのウェブサイトからチェックしています.一定の時間間隔(たとえば3秒)の後、タスクが完了したかどうかを確認しています.
インターネットが高速に動作する場合、このコードに問題はありません。
タスクが完了したら、onPostExecute のタイマーをキャンセルして、さらに作業を行います。
しかし、インターネットの速度が遅い場合、つまり応答が 3 秒以内に来ない場合
onPostExecute
は、複数回呼び出されます (内部でコードを複数回実行する) が、タスクは既に完了していますが、サーバーが原因で応答が遅れただけです。問題/インターネットの遅延。
onPostExecute
内部のコードが一度だけ呼び出されるようにするにはどうすればよいですか?
可能なアプローチ:
- いくつかの静的フラグ変数を取得し、それを真にして、他の変数をチェックインします...
私は信頼できるいくつかの解決策を探しています.おそらくAndroidはこれを同期するためのメカニズムを提供しています..ありがとう