您好我正在构建一个应用程序,它将在固定的时间段(例如每30分钟)执行一段代码.我希望那个时期是严格的,我的意思是我希望保证这段时间是30分钟而不是28分钟,或者只要操作系统执行它.
我有一个Timer对象,并按如下方式使用它:
timer=new Timer();
timer.scheduleAtFixedRate(new GetLastLocation(), 0, this.getInterval());
其中GetLastLocation是扩展TimerTask的处理程序类.这工作正常,但我希望能够更改间隔,我目前正在做的是使用timer.scheduleAtFixedRate两次并更改interval参数让我们说一个newInterval但我认为这只是有两个定时器执行每个间隔现在,新的Interval,我是对的吗?
我也尝试取消定时器,然后使用方法scheduleAtFixedRate(),但这会引发文档中所述的异常.
我该怎么做才能解决这个问题?关于maxsap
您无法安排已取消或安排的计时器.您需要为此创建一个新计时器.
Timer timer;
synchronized void setupTimer(long duration){
if(timer != null) {
timer.cancel();
timer = null;
}
timer = new Timer();
timer.scheduleAtFixedRate(new GetLastLocation(), 0, duration);
}Run Code Online (Sandbox Code Playgroud)现在,只要您想更改计时器的持续时间,就可以调用setupTimer.| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |