В настоящее время я использую Timer и TimerTask для выполнения некоторой работы каждые 30 секунд.
Моя проблема в том, что после каждого выполнения этой работы я хочу увеличивать интервал времени Таймера.
Так, например, он запускается с 30 секундами между срабатыванием таймера, но я хочу добавить 10 секунд к интервалу, чтобы в следующий раз таймер занимал 40 секунд до его срабатывания.
Вот мой предыдущий код:
public void StartScanning() {
scanTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
wifiManager.startScan();
scanCount++;
if(SCAN_INTERVAL_TIME <= SCAN_MAX_INTERVAL){
SCAN_INTERVAL_TIME = SCAN_INTERVAL_TIME + SCAN_INCREASE_INTERVAL;
t.schedule(scanTask, 0, SCAN_INTERVAL_TIME);
}
}
});
}};
Log.d("SCAN_INTERVAL_TIME ** ", "SCAN_INTERVAL_TIME ** = " + SCAN_INTERVAL_TIME);
t.schedule(scanTask, 0, SCAN_INTERVAL_TIME);
}
РЕФАКТОРНЫЙ КОД
@Override
public void StartScanning() {
t.schedule(new ScanTask(),SCAN_INTERVAL_TIME);
}
class ScanTask extends TimerTask{
@Override
public void run() {
wifiManager.startScan();
scanCount++;
if(SCAN_INTERVAL_TIME < SCAN_MAX_INTERVAL)
SCAN_INTERVAL_TIME = SCAN_INTERVAL_TIME + SCAN_INCREASE_INTERVAL;
t.schedule(new ScanTask(), SCAN_INTERVAL_TIME);
}
}
Теперь это работает, но каждый раз создание нового ScanTask () бесполезно?