Я создал 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
из paymentTask
я выполняю некоторые операции при определенных условиях.
По сути, я проверяю с какого-то веб-сайта, через какой-то промежуток времени (скажем, 3 секунды) задача была выполнена или нет.
Теперь, если Интернет работает быстро, с этим кодом проблем нет.
если задача завершается, я отменяю таймер в onPostExecute и делаю свою дальнейшую работу.
Но если интернет работает медленно, что означает, что ответ не приходит в течение 3 секунд, onPostExecute
вызывается более одного раза (выполнение кода внутри него более одного раза), а задача был уже завершен, просто я получил ответ с опозданием из-за проблемы с сервером/задержки в Интернете.
Как я могу убедиться, что код внутри onPostExecute
вызывается только один раз?
Возможные подходы:
- Возьмите какую-нибудь переменную статического флага, сделайте ее истинной и проверьте другие...
Я ищу надежное решение, возможно, Android предоставляет какой-то механизм для синхронизации этого. Спасибо.