日期:2014-05-20  浏览次数:20742 次

定时器Timer().schedule的预期时间问题
Timer().schedule(任务类,程序开始后的延时,周期)  
Timer().schedule(任务类,第一次执行的时间点,周期) 

目前我需要用第二种,定时12:00:00执行一次调度,间隔一天
但是会遇到一个情况
假如我的程序13:05才启动
那么启动后会立即执行调度,且今后自动执行都会在13:05发生

请问我该如何做修改,保证实现以下两个需求?
1)若程序启动时,当前时间大于12:00:00,立即执行一次
2)今后的自动调度都在12:00:00发生

我现在做了时间比较,在将12:00:00加入了时间,只能保证2),却无法保证1)


------解决方案--------------------
不就加个if else吗?
------解决方案--------------------
Timer().scheduleAtFixedRate(TimerTask task,Date time,long period)
这个应该是可以的
------解决方案--------------------
用两个定时器timer1和timer2,一个定时任务task。
若程序启动时,当前时间大于12:00:00,立即执行一次,此定时器延迟为0 ,可以立刻执行,且无周期,只执行一次,schedule(task,0);
今后的自动调度都在12:00:00发生。执行定时器2,它的首次执行时间,可以设置在第二天。

------解决方案--------------------
同意楼上的!

------解决方案--------------------
----------同上
------解决方案--------------------
将周期改为一分钟,然后再在执行的任务代码里面去判断当前时间是不是12点。
------解决方案--------------------
同意楼楼上的!
------解决方案--------------------
Timer().scheduleAtFixedRate(TimerTask task,Date time,long period)
这个能保证在固定点运行
------解决方案--------------------
就5L那样做吧,就是个if-else问题