キープアライブを受け取ったときにタイマーを再起動したいのですが、問題は、新しいタイマーを作成するのではなく、再起動しないことがあるため、最終的にタイマーが制限に達することです:
public class KeepAliveTimer {
long macAddress;
Timer timer;
String ip;
public KeepAliveTimer(long mac, String ipAddress){
this.macAddress = mac;
this.ip = ipAddress;
timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
timerFinished();
}
};
timer.schedule(timerTask, 10*60*1000);
}
public void update() {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
timerFinished();
}
};
timer.cancel();
timer.purge();
timer = new Timer();
timer.schedule(timerTask, 10*60*1000);
}
public void timerFinished() {
//tasks
}
}
オブジェクト KeepAliveTimer は、最初の keepAlive を受信したときに作成され、次のキープアライブによって更新されます